Support building chip-tool with python3.12 (#33242) #312
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright (c) 2020-2021 Project CHIP Authors | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
name: Darwin | |
on: | |
push: | |
pull_request: | |
merge_group: | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }} | |
cancel-in-progress: true | |
env: | |
CHIP_NO_LOG_TIMESTAMPS: true | |
jobs: | |
framework: | |
name: Build framework | |
if: github.actor != 'restyled-io[bot]' | |
runs-on: macos-13 | |
strategy: | |
matrix: | |
options: # We don't need a full matrix | |
- flavor: macos-release-availability | |
arguments: -sdk macosx -configuration Release OTHER_CFLAGS='${inherited} -Werror -Wconversion -Wno-unguarded-availability-new' | |
- flavor: ios-release | |
arguments: -sdk iphoneos -configuration Release OTHER_CFLAGS='${inherited} -Werror -Wconversion' GCC_PREPROCESSOR_DEFINITIONS='${inherited} MTR_NO_AVAILABILITY=1' | |
- flavor: ios-debug | |
arguments: -sdk iphoneos -configuration Debug OTHER_CFLAGS='${inherited} -Werror -Wconversion' GCC_PREPROCESSOR_DEFINITIONS='${inherited} MTR_NO_AVAILABILITY=1' | |
- flavor: tvos-debug | |
arguments: -sdk appletvos -configuration Debug OTHER_CFLAGS='${inherited} -Werror -Wconversion' GCC_PREPROCESSOR_DEFINITIONS='${inherited} MTR_NO_AVAILABILITY=1' | |
- flavor: watchos-debug | |
arguments: -sdk watchos -configuration Debug OTHER_CFLAGS='${inherited} -Werror -Wconversion' GCC_PREPROCESSOR_DEFINITIONS='${inherited} MTR_NO_AVAILABILITY=1' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Environment | |
run: brew install [email protected] | |
- name: Checkout submodules & Bootstrap | |
uses: ./.github/actions/checkout-submodules-and-bootstrap | |
with: | |
platform: darwin | |
bootstrap-log-name: bootstrap-logs-framework-${{ matrix.options.flavor }} | |
- name: Block zap-cli from being used | |
run: | | |
# Framework builds are NOT expected to require zap-cli | |
scripts/run_in_build_env.sh 'D=$(dirname $(which zap-cli)) && mv $D/zap-cli $D/zap-cli.moved' | |
# run_in_build_env.sh is used to ensure PATH is set to something that would otherwise find zap-cli | |
scripts/run_in_build_env.sh '(zap-cli --version && exit 1) || exit 0' | |
- name: Build | |
working-directory: src/darwin/Framework | |
run: xcodebuild -target "Matter" ${{ matrix.options.arguments }} | |
tests: | |
name: Run framework tests | |
if: github.actor != 'restyled-io[bot]' | |
runs-on: macos-13 | |
strategy: | |
matrix: | |
options: # We don't need a full matrix | |
- flavor: asan | |
arguments: -enableAddressSanitizer YES -enableUndefinedBehaviorSanitizer YES | |
- flavor: asan-global-storage | |
arguments: -enableAddressSanitizer YES -enableUndefinedBehaviorSanitizer YES | |
defines: MTR_PER_CONTROLLER_STORAGE_ENABLED=0 | |
- flavor: tsan | |
arguments: -enableThreadSanitizer YES | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Environment | |
run: brew install [email protected] | |
- name: Checkout submodules & Bootstrap | |
uses: ./.github/actions/checkout-submodules-and-bootstrap | |
with: | |
platform: darwin | |
bootstrap-log-name: bootstrap-logs-framework-${{ matrix.options.flavor }} | |
- name: Build example All Clusters Server | |
run: | | |
scripts/examples/gn_build_example.sh examples/all-clusters-app/linux out/debug chip_config_network_layer_ble=false | |
- name: Build example OTA Provider | |
run: | | |
scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/debug chip_config_network_layer_ble=false | |
- name: Build example OTA Requestor | |
run: | | |
scripts/examples/gn_build_example.sh examples/ota-requestor-app/linux out/debug/ota-requestor-app chip_config_network_layer_ble=false non_spec_compliant_ota_action_delay_floor=0 | |
- name: Run Framework Tests | |
# For now disable unguarded-availability-new warnings because we | |
# internally use APIs that we are annotating as only available on | |
# new enough versions. Maybe we should change out deployment | |
# target versions instead? | |
working-directory: src/darwin/Framework | |
run: | | |
mkdir -p /tmp/darwin/framework-tests | |
echo "This is a simple log" > /tmp/darwin/framework-tests/end_user_support_log.txt | |
../../../out/debug/chip-all-clusters-app --interface-id -1 --end_user_support_log /tmp/darwin/framework-tests/end_user_support_log.txt > >(tee /tmp/darwin/framework-tests/all-cluster-app.log) 2> >(tee /tmp/darwin/framework-tests/all-cluster-app-err.log >&2) & | |
../../../out/debug/chip-all-clusters-app --interface-id -1 --dac_provider ../../../credentials/development/commissioner_dut/struct_cd_origin_pid_vid_correct/test_case_vector.json --product-id 32768 --discriminator 3839 --secured-device-port 5539 --KVS /tmp/chip-all-clusters-app-kvs2 > >(tee /tmp/darwin/framework-tests/all-cluster-app-origin-vid.log) 2> >(tee /tmp/darwin/framework-tests/all-cluster-app-origin-vid-err.log >&2) & | |
export TEST_RUNNER_ASAN_OPTIONS=__CURRENT_VALUE__:detect_stack_use_after_return=1 | |
# Disable BLE (CHIP_IS_BLE=NO) because the app does not have the permission to use it and that may crash the CI. | |
xcodebuild test -target "Matter" -scheme "Matter Framework Tests" -sdk macosx ${{ matrix.options.arguments }} \ | |
OTHER_CFLAGS='${inherited} -Werror -Wconversion' CHIP_IS_BLE=NO GCC_PREPROCESSOR_DEFINITIONS='${inherited} MTR_NO_AVAILABILITY=1 ${{ matrix.options.defines }}' \ | |
> >(tee /tmp/darwin/framework-tests/darwin-tests.log) 2> >(tee /tmp/darwin/framework-tests/darwin-tests-err.log >&2) | |
- name: Collect crash logs | |
run: | | |
mkdir -p /tmp/darwin/framework-tests | |
find ~/Library/Developer/Xcode/DerivedData /Library/Logs/DiagnosticReports -name '*.ips' -print0 | xargs -0 -J % cp % /tmp/darwin/framework-tests | |
- name: Uploading log files | |
uses: actions/upload-artifact@v4 | |
if: failure() && !env.ACT | |
with: | |
name: darwin-framework-test-logs-${{ matrix.options.flavor }} | |
path: /tmp/darwin/framework-tests | |
retention-days: 5 | |
tv-casting-bridge: | |
name: Build TV Casting Bridge example | |
if: github.actor != 'restyled-io[bot]' | |
runs-on: macos-13 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Environment | |
run: brew install [email protected] | |
- name: Checkout submodules & Bootstrap | |
uses: ./.github/actions/checkout-submodules-and-bootstrap | |
with: | |
platform: darwin | |
- name: Build | |
working-directory: examples/tv-casting-app/darwin/MatterTvCastingBridge | |
run: xcodebuild -target "MatterTvCastingBridge" -sdk iphoneos | |
darwin: | |
name: Build Darwin # Matches the previous monolithic build that's marked "required" for PRs | |
needs: [ framework, tests ] | |
runs-on: macos-13 | |
steps: | |
- name: Done | |
run: 'true' # nothing to do |