From ac5ed50b37fb11b5f38ca2a3ba04b2e003295966 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Tue, 30 Sep 2025 14:49:26 -0700 Subject: [PATCH] [backport] macos ci fixes for v1.16 (#25672) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ci: lockdown gcc v9 for macos Signed-off-by: Ramon Roche * pxh: do not use variable sized array on the stack This is a compiler-specific extension * ci: macos build on older gcc Signed-off-by: Ramon Roche --------- Signed-off-by: Ramon Roche Co-authored-by: Beat Küng --- .github/workflows/compile_macos.yml | 7 +++++-- Tools/setup/macos.sh | 2 ++ platforms/posix/src/px4/common/px4_daemon/pxh.cpp | 6 ++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/workflows/compile_macos.yml b/.github/workflows/compile_macos.yml index 7aebec29ff..fb8bb908c8 100644 --- a/.github/workflows/compile_macos.yml +++ b/.github/workflows/compile_macos.yml @@ -16,7 +16,7 @@ on: jobs: build: - runs-on: macos-latest + runs-on: macos-14 strategy: matrix: config: [ @@ -32,7 +32,8 @@ jobs: - uses: actions/checkout@v4 - name: setup - run: ./Tools/setup/macos.sh; ./Tools/setup/macos.sh + run: | + ./Tools/setup/macos.sh - name: Prepare ccache timestamp id: ccache_cache_timestamp @@ -40,12 +41,14 @@ jobs: run: | string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC) message("::set-output name=timestamp::${current_date}") + - name: ccache cache files uses: actions/cache@v4 with: path: ~/.ccache key: macos_${{matrix.config}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}} restore-keys: macos_${{matrix.config}}-ccache- + - name: setup ccache run: | mkdir -p ~/.ccache diff --git a/Tools/setup/macos.sh b/Tools/setup/macos.sh index f0686ab6d4..2c99160dfb 100755 --- a/Tools/setup/macos.sh +++ b/Tools/setup/macos.sh @@ -42,6 +42,8 @@ else echo "Installing PX4 general dependencies (homebrew px4-dev)" brew tap PX4/px4 brew install px4-dev + # lock down gcc to v9 for v1.16 branch + brew install gcc-arm-none-eabi brew install ncurses brew install python-tk fi diff --git a/platforms/posix/src/px4/common/px4_daemon/pxh.cpp b/platforms/posix/src/px4/common/px4_daemon/pxh.cpp index 9bcf0268ad..8774facd71 100644 --- a/platforms/posix/src/px4/common/px4_daemon/pxh.cpp +++ b/platforms/posix/src/px4/common/px4_daemon/pxh.cpp @@ -101,7 +101,7 @@ int Pxh::process_line(const std::string &line, bool silently_fail) // Note that argv[argc] always needs to be a nullptr. // Therefore add one more entry. - const char *arg[words.size() + 1]; + char **arg = new char *[words.size() + 1]; for (unsigned i = 0; i < words.size(); ++i) { arg[i] = (char *)words[i].c_str(); @@ -110,7 +110,7 @@ int Pxh::process_line(const std::string &line, bool silently_fail) // Explicitly set this nullptr. arg[words.size()] = nullptr; - int retval = _apps[command](words.size(), (char **)arg); + int retval = _apps[command](words.size(), arg); if (retval) { if (!silently_fail) { @@ -118,6 +118,8 @@ int Pxh::process_line(const std::string &line, bool silently_fail) } } + delete[] arg; + return retval; } else if (command == "help") {