Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/actions/build-setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,7 @@ runs:
android-cmdline-tools: ${{ steps.prereq.outputs.android_cmdline_tools }}
android-build-tools: ${{ steps.prereq.outputs.android_build_tools }}
save-cache: ${{ inputs.save-cache }}
aqt-source: ${{ inputs.aqt-source }}

- name: Install Qt for iOS
if: inputs.mode == 'ios'
Expand Down
7 changes: 5 additions & 2 deletions .github/actions/install-dependencies/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,13 @@ runs:
timeout_minutes: 20
max_attempts: 3
shell: bash
# Acquire::*::Timeout aborts a stalled mirror connection so retries can fire.
command: |
sudo apt-get -o Acquire::Retries=3 update -qq
APT_OPTS="-o Acquire::Retries=3 -o Acquire::http::Timeout=30 -o Acquire::https::Timeout=30"
# shellcheck disable=SC2086
sudo apt-get -o Acquire::Retries=3 install -y --no-install-recommends $APT_PACKAGES
sudo apt-get $APT_OPTS update -qq
# shellcheck disable=SC2086
sudo apt-get $APT_OPTS install -y --no-install-recommends $APT_PACKAGES

- name: Fix apt alternatives (Linux)
if: runner.os == 'Linux'
Expand Down
9 changes: 9 additions & 0 deletions .github/actions/qt-android/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ inputs:
description: "Whether to save cache (auto = save for pushes and same-repo PRs, skip for fork PRs)"
required: false
default: 'auto'
aqt-source:
description: Optional pip spec used to install aqtinstall (e.g. git+https://github.com/miurahr/aqtinstall.git@<sha>)
required: false
default: ''
runs:
using: composite
steps:
Expand Down Expand Up @@ -93,6 +97,7 @@ runs:
arch: ${{ inputs.arch }}
dir: ${{ runner.temp }}
modules: ${{ inputs.modules }}
aqt-source: ${{ inputs.aqt-source }}

- name: Install Qt for Android (arm64_v8a)
if: contains(format(';{0};', inputs.abis), ';arm64-v8a;')
Expand All @@ -106,6 +111,7 @@ runs:
dir: ${{ runner.temp }}
modules: ${{ inputs.modules }}
export-env: 'false'
aqt-source: ${{ inputs.aqt-source }}

- name: Install Qt for Android (armv7)
if: contains(format(';{0};', inputs.abis), ';armeabi-v7a;')
Expand All @@ -119,6 +125,7 @@ runs:
dir: ${{ runner.temp }}
modules: ${{ inputs.modules }}
export-env: 'false'
aqt-source: ${{ inputs.aqt-source }}

- name: Install Qt for Android (x86_64)
if: contains(format(';{0};', inputs.abis), ';x86_64;')
Expand All @@ -132,6 +139,7 @@ runs:
dir: ${{ runner.temp }}
modules: ${{ inputs.modules }}
export-env: 'false'
aqt-source: ${{ inputs.aqt-source }}

- name: Install Qt for Android (x86)
if: contains(format(';{0};', inputs.abis), ';x86;')
Expand All @@ -145,6 +153,7 @@ runs:
dir: ${{ runner.temp }}
modules: ${{ inputs.modules }}
export-env: 'false'
aqt-source: ${{ inputs.aqt-source }}

- name: Resolve primary Android Qt root
id: qt-target
Expand Down
12 changes: 6 additions & 6 deletions .github/build-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,25 @@
"android_build_tools": "36.0.0",
"ccache_version": "4.13.6",
"mold_version": "2.41.0",
"android_cmdline_tools": "13114758",
"android_cmdline_tools": "14742923",
"android_min_sdk": "28",
"android_platform": "35",
"android_platform": "36",
"cmake_minimum_version": "3.25",
"gstreamer_android_version": "1.28.1",
"gstreamer_ios_version": "1.28.1",
"gstreamer_macos_version": "1.28.1",
"gstreamer_minimum_version": "1.20.0",
"gstreamer_default_version": "1.28.1",
"gstreamer_windows_version": "1.28.1",
"ios_deployment_target": "14.0",
"java_version": "17",
"ios_deployment_target": "17.0",
"java_version": "21",
"macos_deployment_target": "13.0",
Comment on lines +16 to 18
"ndk_full_version": "27.2.12479018",
"platform_workflows": "Linux,Windows,MacOS,Android",
"ndk_version": "r27c",
"qt_minimum_version": "6.10.0",
"qt_minimum_version": "6.11.0",
"qt_modules": "qtgraphs qtlocation qtpositioning qtspeech qtmultimedia qtserialport qtimageformats qtshadertools qtconnectivity qtquick3d qtsensors qtscxml qtwebsockets qthttpserver",
"qt_version": "6.10.3",
"qt_version": "6.11.1",
"vulkan_sdk_version": "1.4.304.1",
"xcode_ios_version": "latest-stable",
"xcode_version": "16.x",
Expand Down
14 changes: 13 additions & 1 deletion .github/scripts/cmake_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,18 @@ def cmd_configure(args: argparse.Namespace) -> None:
sys.exit(result.returncode)


def _maybe_wrap_xvfb(cmd: list[str]) -> list[str]:
"""Prefix `xvfb-run` on headless Linux so the offscreen plugin's GLX path
gets a display and QRhiGles2 can create a software GL context."""
if sys.platform.startswith("linux") and not os.environ.get("DISPLAY"):
xvfb = shutil.which("xvfb-run")
if xvfb:
print("::notice::No DISPLAY; running CTest under xvfb-run")
return [xvfb, "-a", *cmd]
print("::warning::xvfb-run not found; tests run without a GL context")
return cmd


def cmd_ctest(args: argparse.Namespace) -> None:
"""Run CTest with standardized arguments and timing."""
cmd = [
Expand All @@ -166,7 +178,7 @@ def cmd_ctest(args: argparse.Namespace) -> None:
cmd += ["-I", f"{start_idx},0,{args.shard_count}"]

start = time.monotonic()
exit_code = _run_with_tee(cmd, args.ctest_output)
exit_code = _run_with_tee(_maybe_wrap_xvfb(cmd), args.ctest_output)
duration = int(time.monotonic() - start)
gh_notice(f"Tests completed in {duration}s")
sys.exit(exit_code)
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ jobs:
shell: pwsh
primary: false
emulator: false
aqt_source: 'git+https://github.com/miurahr/aqtinstall.git@8d961e61720b3c06583517fbc68d57ec0a4e9f95'
- host: linux-emulator
qt_host: linux
runner: ${{ github.repository_owner == 'mavlink' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) && format('runs-on={0}/runner=linux-x64-emulator', github.run_id) || 'ubuntu-latest' }}
Expand Down Expand Up @@ -131,6 +132,7 @@ jobs:
mode: android
qt-host: ${{ matrix.qt_host || matrix.host }}
qt-arch: ${{ matrix.arch }}
aqt-source: ${{ matrix.aqt_source || '' }}
abis: ${{ env.QT_ANDROID_ABIS }}
build-type: ${{ env.BUILD_TYPE }}
cpm-modules: ${{ runner.temp }}/build/cpm_modules
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ permissions:
attestations: write
actions: read

env:
AQT_SOURCE: 'git+https://github.com/miurahr/aqtinstall.git@8d961e61720b3c06583517fbc68d57ec0a4e9f95'

jobs:
changes:
uses: ./.github/workflows/_detect-changes.yml
Expand Down Expand Up @@ -68,7 +71,6 @@ jobs:
host: windows
arch: win64_msvc2022_arm64_cross_compiled
package: QGroundControl-installer-AMD64-ARM64
aqt_source: 'git+https://github.com/miurahr/aqtinstall.git@c84e1470349e5bedbeee977bd62ec495d50d65b6'

defaults:
run:
Expand Down Expand Up @@ -107,7 +109,7 @@ jobs:
with:
qt-host: ${{ matrix.host }}
qt-arch: ${{ matrix.arch }}
aqt-source: ${{ matrix.aqt_source || '' }}
aqt-source: ${{ env.AQT_SOURCE }}
build-type: ${{ matrix.build_type }}

- name: Configure
Expand Down
3 changes: 3 additions & 0 deletions .lychee.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ exclude = [
'^https?://review\.px4\.io',
'^https?://discuss\.px4\.io',

# Dynamic build artifact (CDN returns 502 when build is mid-publish)
'^https://d176tv9ibo4jno\.cloudfront\.net/',

# Dead/restructured external sites
'^https?://www\.cplusplus\.com/',
'^https?://gaming\.logitech\.com/',
Expand Down
4 changes: 0 additions & 4 deletions android/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,9 @@
<meta-data
android:name="android.app.splash_screen_drawable"
android:resource="@drawable/splashscreen" />
<!-- <meta-data android:name="android.app.splash_screen_drawable_portrait" -->
<!-- <meta-data android:name="android.app.splash_screen_drawable_landscape" -->
<meta-data
android:name="android.app.splash_screen_sticky"
android:value="false" />
<!-- <meta-data android:name="android.app.background_running" -->
<!-- <meta-data android:name="android.app.trace_location" -->
</activity>

<provider
Expand Down
Loading
Loading