fourth
|
@ -0,0 +1,42 @@
|
||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
labels:
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
The following template is for Issue/Bug reporting only. https://docs.qgroundcontrol.com/en/Support/Support.html#github-issues
|
||||||
|
|
||||||
|
For questions about how to use or build QGC see: http://qgroundcontrol.com/#resources
|
||||||
|
|
||||||
|
If you are using an old stable release please upgrade first and verify your issue before reporting.
|
||||||
|
----
|
||||||
|
|
||||||
|
## Expected Behavior
|
||||||
|
Please tell us what should happen as detailed as possible.
|
||||||
|
|
||||||
|
## Current Behavior
|
||||||
|
Please describe what happens instead of the expected behavior.
|
||||||
|
|
||||||
|
## Steps to Reproduce:
|
||||||
|
Please provide an unambiguous set of steps to reproduce the current behavior
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
4.
|
||||||
|
|
||||||
|
## System Information
|
||||||
|
When posting bug reports, include the following information
|
||||||
|
- Operating System: [e.g. iOS 12.1, Windows 8, macOS Mojave 10.14.1, Ubuntu 14]
|
||||||
|
- QGC Version: [e.g. 3.4.4]
|
||||||
|
- QGC build: [e.g., daily, stable, self-built from source, etc...]
|
||||||
|
- Flight Controller: [e.g., Pixhawk I, Pixhawk Mini, Pixhawk 2, etc.]
|
||||||
|
- Autopilot (with version): [e.g., PX4 1.8.1, Ardupilot Copter 3.6.1]
|
||||||
|
|
||||||
|
## Detailed Description
|
||||||
|
Provide further details about your issue/bug.
|
||||||
|
|
||||||
|
## Log Files and Screenshots
|
||||||
|
- [QGC Console Logs](https://docs.qgroundcontrol.com/en/Support/Support.html#reporting-bugs)
|
||||||
|
- Autopilot logs when available (post a link).
|
||||||
|
- Screenshots of QGC to help identify the current issue/bug behavior.
|
|
@ -0,0 +1,15 @@
|
||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Tell us about your new idea
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Tell us a bit about the feature:
|
||||||
|
- What problem does it solve?
|
||||||
|
- What does it do?
|
||||||
|
- What flight stacks must it work with? (All, PX4, ArduPilot)
|
||||||
|
- Relevant vehicle types? (All, multirotor, fixed-wing, VTOL, submarine, etc.)
|
||||||
|
- Are there other systems that have this feature?
|
||||||
|
- What communication/integration standards does the feature rely on (e.g. MAVLink commands etc.)
|
||||||
|
|
||||||
|
Any additional context you can provide will make the feature easier to evaluate (e.g. mockups, detailed specification, etc.)
|
|
@ -0,0 +1,144 @@
|
||||||
|
# The 32 and 64 bit version of these actions should be kept in sync
|
||||||
|
name: Android 32-bit Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
- 'Stable*'
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
env:
|
||||||
|
SOURCE_DIR: ${{ github.workspace }}
|
||||||
|
QT_VERSION: 5.15.2
|
||||||
|
ARTIFACT: QGroundControl32.apk
|
||||||
|
BUILD_TYPE: ${{ fromJSON('["DailyBuild", "StableBuild"]')[ github.ref_type == 'tag' || contains(github.ref, 'Stable_' ) ] }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Get all tags for correct version determination
|
||||||
|
working-directory: ${{ github.workspace }}
|
||||||
|
run: |
|
||||||
|
git fetch --all --tags -f
|
||||||
|
|
||||||
|
- name: Install Qt
|
||||||
|
uses: jurplel/install-qt-action@v3
|
||||||
|
with:
|
||||||
|
version: ${{ env.QT_VERSION }}
|
||||||
|
host: linux
|
||||||
|
target: android
|
||||||
|
dir: ${{ runner.temp }}
|
||||||
|
modules: qtcharts
|
||||||
|
setup-python: true
|
||||||
|
|
||||||
|
- name: Install Android NDK
|
||||||
|
uses: nttld/setup-ndk@v1
|
||||||
|
id: setup-ndk
|
||||||
|
with:
|
||||||
|
ndk-version: r21e
|
||||||
|
add-to-path: false
|
||||||
|
|
||||||
|
- name: Remove Android SDK android-33-ext
|
||||||
|
run: |
|
||||||
|
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --uninstall "platforms;android-33-ext5"
|
||||||
|
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --uninstall "platforms;android-33-ext4"
|
||||||
|
|
||||||
|
- name: Install ccache
|
||||||
|
run: sudo apt-get install ccache
|
||||||
|
|
||||||
|
- name: Prepare ccache timestamp
|
||||||
|
id: ccache_cache_timestamp
|
||||||
|
shell: cmake -P {0}
|
||||||
|
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@v2
|
||||||
|
with:
|
||||||
|
path: ~/.ccache
|
||||||
|
key: ${{ runner.os }}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
|
||||||
|
restore-keys: ${{ runner.os }}-ccache-
|
||||||
|
|
||||||
|
- name: Setup ccache
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.ccache
|
||||||
|
echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
|
||||||
|
echo "compression = true" >> ~/.ccache/ccache.conf
|
||||||
|
echo "compression_level = 5" >> ~/.ccache/ccache.conf
|
||||||
|
ccache -s
|
||||||
|
ccache -z
|
||||||
|
|
||||||
|
- name: Create build directory
|
||||||
|
run: mkdir ${{ runner.temp }}/shadow_build_dir
|
||||||
|
|
||||||
|
- name: Install gstreamer
|
||||||
|
working-directory: ${{ github.workspace }}
|
||||||
|
run: |
|
||||||
|
wget --quiet https://gstreamer.freedesktop.org/data/pkg/android/1.18.5/gstreamer-1.0-android-universal-1.18.5.tar.xz
|
||||||
|
mkdir gstreamer-1.0-android-universal-1.18.5
|
||||||
|
tar xf gstreamer-1.0-android-universal-1.18.5.tar.xz -C gstreamer-1.0-android-universal-1.18.5
|
||||||
|
|
||||||
|
# This will set GIT_BRANCH_NAME environment variable
|
||||||
|
- name: Git branch name
|
||||||
|
id: git-branch-name
|
||||||
|
uses: EthanSK/git-branch-name-action@v1
|
||||||
|
|
||||||
|
- name: Update android manifest
|
||||||
|
run: |
|
||||||
|
if [ $GIT_BRANCH_NAME != "Stable*" ]; then
|
||||||
|
${SOURCE_DIR}/tools/update_android_manifest_package.sh ${GIT_BRANCH_NAME}
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir
|
||||||
|
env:
|
||||||
|
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
|
||||||
|
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||||
|
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||||
|
ANDROID_NDK_LATEST_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||||
|
ANDROID_NDK: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||||
|
run: |
|
||||||
|
qmake -r ${SOURCE_DIR}/qgroundcontrol.pro -spec android-clang CONFIG+=${BUILD_TYPE} CONFIG+=installer ANDROID_ABIS="armeabi-v7a"
|
||||||
|
make -j2
|
||||||
|
|
||||||
|
- name: ccache post-run
|
||||||
|
run: ccache -s
|
||||||
|
|
||||||
|
- name: Save artifact
|
||||||
|
uses: actions/upload-artifact@master
|
||||||
|
with:
|
||||||
|
name: ${{ env.ARTIFACT }}
|
||||||
|
path: ${{ runner.temp }}/shadow_build_dir/package/${{ env.ARTIFACT }}
|
||||||
|
|
||||||
|
- name: Upload build to S3 Bucket
|
||||||
|
if: github.event_name == 'push'
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir/package
|
||||||
|
run: |
|
||||||
|
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
aws s3 cp ${ARTIFACT} s3://qgroundcontrol/builds/${GIT_BRANCH_NAME}/${ARTIFACT} --region us-west-2 --acl public-read
|
||||||
|
|
||||||
|
- name: Upload tagged stable build to S3 latest Bucket
|
||||||
|
if: github.event_name == 'push' && github.ref_type == 'tag'
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir/package
|
||||||
|
run: |
|
||||||
|
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
aws s3 cp ${ARTIFACT} s3://qgroundcontrol/latest/${ARTIFACT} --region us-west-2 --acl public-read
|
|
@ -0,0 +1,144 @@
|
||||||
|
# The 32 and 64 bit version of these actions should be kept in sync
|
||||||
|
name: Android 64-bit Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
- 'Stable*'
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
env:
|
||||||
|
SOURCE_DIR: ${{ github.workspace }}
|
||||||
|
QT_VERSION: 5.15.2
|
||||||
|
ARTIFACT: QGroundControl64.apk
|
||||||
|
BUILD_TYPE: ${{ fromJSON('["DailyBuild", "StableBuild"]')[ github.ref_type == 'tag' || contains(github.ref, 'Stable_' ) ] }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Get all tags for correct version determination
|
||||||
|
working-directory: ${{ github.workspace }}
|
||||||
|
run: |
|
||||||
|
git fetch --all --tags -f
|
||||||
|
|
||||||
|
- name: Install Qt
|
||||||
|
uses: jurplel/install-qt-action@v3
|
||||||
|
with:
|
||||||
|
version: ${{ env.QT_VERSION }}
|
||||||
|
host: linux
|
||||||
|
target: android
|
||||||
|
dir: ${{ runner.temp }}
|
||||||
|
modules: qtcharts
|
||||||
|
setup-python: true
|
||||||
|
|
||||||
|
- name: Install Android NDK
|
||||||
|
uses: nttld/setup-ndk@v1
|
||||||
|
id: setup-ndk
|
||||||
|
with:
|
||||||
|
ndk-version: r21e
|
||||||
|
add-to-path: false
|
||||||
|
|
||||||
|
- name: Remove Android SDK android-33-ext
|
||||||
|
run: |
|
||||||
|
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --uninstall "platforms;android-33-ext5"
|
||||||
|
${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --uninstall "platforms;android-33-ext4"
|
||||||
|
|
||||||
|
- name: Install ccache
|
||||||
|
run: sudo apt-get install ccache
|
||||||
|
|
||||||
|
- name: Prepare ccache timestamp
|
||||||
|
id: ccache_cache_timestamp
|
||||||
|
shell: cmake -P {0}
|
||||||
|
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@v2
|
||||||
|
with:
|
||||||
|
path: ~/.ccache
|
||||||
|
key: ${{ runner.os }}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
|
||||||
|
restore-keys: ${{ runner.os }}-ccache-
|
||||||
|
|
||||||
|
- name: Setup ccache
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.ccache
|
||||||
|
echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
|
||||||
|
echo "compression = true" >> ~/.ccache/ccache.conf
|
||||||
|
echo "compression_level = 5" >> ~/.ccache/ccache.conf
|
||||||
|
ccache -s
|
||||||
|
ccache -z
|
||||||
|
|
||||||
|
- name: Create build directory
|
||||||
|
run: mkdir ${{ runner.temp }}/shadow_build_dir
|
||||||
|
|
||||||
|
- name: Install gstreamer
|
||||||
|
working-directory: ${{ github.workspace }}
|
||||||
|
run: |
|
||||||
|
wget --quiet https://gstreamer.freedesktop.org/data/pkg/android/1.18.5/gstreamer-1.0-android-universal-1.18.5.tar.xz
|
||||||
|
mkdir gstreamer-1.0-android-universal-1.18.5
|
||||||
|
tar xf gstreamer-1.0-android-universal-1.18.5.tar.xz -C gstreamer-1.0-android-universal-1.18.5
|
||||||
|
|
||||||
|
# This will set GIT_BRANCH_NAME environment variable
|
||||||
|
- name: Git branch name
|
||||||
|
id: git-branch-name
|
||||||
|
uses: EthanSK/git-branch-name-action@v1
|
||||||
|
|
||||||
|
- name: Update android manifest
|
||||||
|
run: |
|
||||||
|
if [ $GIT_BRANCH_NAME != "Stable*" ]; then
|
||||||
|
${SOURCE_DIR}/tools/update_android_manifest_package.sh ${GIT_BRANCH_NAME}
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir
|
||||||
|
env:
|
||||||
|
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
|
||||||
|
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||||
|
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||||
|
ANDROID_NDK_LATEST_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||||
|
ANDROID_NDK: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||||
|
run: |
|
||||||
|
qmake -r ${SOURCE_DIR}/qgroundcontrol.pro -spec android-clang CONFIG+=${BUILD_TYPE} CONFIG+=installer ANDROID_ABIS="arm64-v8a"
|
||||||
|
make -j2
|
||||||
|
|
||||||
|
- name: ccache post-run
|
||||||
|
run: ccache -s
|
||||||
|
|
||||||
|
- name: Save artifact
|
||||||
|
uses: actions/upload-artifact@master
|
||||||
|
with:
|
||||||
|
name: ${{ env.ARTIFACT }}
|
||||||
|
path: ${{ runner.temp }}/shadow_build_dir/package/${{ env.ARTIFACT }}
|
||||||
|
|
||||||
|
- name: Upload build to S3 Bucket
|
||||||
|
if: github.event_name == 'push'
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir/package
|
||||||
|
run: |
|
||||||
|
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
aws s3 cp ${ARTIFACT} s3://qgroundcontrol/builds/${GIT_BRANCH_NAME}/${ARTIFACT} --region us-west-2 --acl public-read
|
||||||
|
|
||||||
|
- name: Upload tagged stable build to S3 latest Bucket
|
||||||
|
if: github.event_name == 'push' && github.ref_type == 'tag'
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir/package
|
||||||
|
run: |
|
||||||
|
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
aws s3 cp ${ARTIFACT} s3://qgroundcontrol/latest/${ARTIFACT} --region us-west-2 --acl public-read
|
|
@ -0,0 +1,98 @@
|
||||||
|
name: Linux Debug and Test
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
env:
|
||||||
|
SOURCE_DIR: ${{ github.workspace }}
|
||||||
|
QT_VERSION: 5.15.2
|
||||||
|
BUILD_TYPE: ${{ fromJSON('["DailyBuild", "StableBuild"]')[ github.ref_type == 'tag' || contains(github.ref, 'Stable_' ) ] }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Install Qt
|
||||||
|
uses: jurplel/install-qt-action@v2
|
||||||
|
with:
|
||||||
|
version: ${{ env.QT_VERSION }}
|
||||||
|
host: linux
|
||||||
|
target: desktop
|
||||||
|
dir: ${{ runner.temp }}
|
||||||
|
modules: qtcharts
|
||||||
|
setup-python: true
|
||||||
|
|
||||||
|
- name: Install QGC source dependencies
|
||||||
|
run: sudo apt-get install -y libsdl2-dev
|
||||||
|
|
||||||
|
- name: Install Gstreamer dev packages
|
||||||
|
run: sudo apt-get install -y libgstreamer-plugins-base1.0-dev libgstreamer1.0-0:amd64 libgstreamer1.0-dev
|
||||||
|
|
||||||
|
- name: Install ccache
|
||||||
|
run: sudo apt-get install ccache
|
||||||
|
|
||||||
|
- name: Install post-link dependencies
|
||||||
|
run: sudo apt-get install -y binutils patchelf
|
||||||
|
|
||||||
|
- name: Prepare ccache timestamp
|
||||||
|
id: ccache_cache_timestamp
|
||||||
|
shell: cmake -P {0}
|
||||||
|
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@v2
|
||||||
|
with:
|
||||||
|
path: ~/.ccache
|
||||||
|
key: ${{ runner.os }}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
|
||||||
|
restore-keys: ${{ runner.os }}-ccache-
|
||||||
|
|
||||||
|
- name: Setup ccache
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.ccache
|
||||||
|
echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
|
||||||
|
echo "compression = true" >> ~/.ccache/ccache.conf
|
||||||
|
echo "compression_level = 5" >> ~/.ccache/ccache.conf
|
||||||
|
ccache -s
|
||||||
|
ccache -z
|
||||||
|
|
||||||
|
- name: Create build directory
|
||||||
|
run: mkdir ${{ runner.temp }}/shadow_build_dir
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir
|
||||||
|
run: |
|
||||||
|
qmake -r ${SOURCE_DIR}/qgroundcontrol.pro CONFIG+=debug CONFIG+=${BUILD_TYPE}
|
||||||
|
make -j2
|
||||||
|
|
||||||
|
- name: ccache post-run
|
||||||
|
run: ccache -s
|
||||||
|
|
||||||
|
- name: Setup for unit tests
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.config/QtProject/
|
||||||
|
cp ${SOURCE_DIR}/test/qtlogging.ini ~/.config/QtProject/
|
||||||
|
export QT_FATAL_WARNINGS=1
|
||||||
|
|
||||||
|
- name: Run unit tests
|
||||||
|
uses: GabrielBB/xvfb-action@v1
|
||||||
|
with:
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir
|
||||||
|
run: ./staging/qgroundcontrol-start.sh --unittest
|
|
@ -0,0 +1,125 @@
|
||||||
|
name: Linux Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
- 'Stable*'
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
env:
|
||||||
|
SOURCE_DIR: ${{ github.workspace }}
|
||||||
|
QT_VERSION: 5.15.2
|
||||||
|
ARTIFACT: QGroundControl.AppImage
|
||||||
|
BUILD_TYPE: ${{ fromJSON('["DailyBuild", "StableBuild"]')[ github.ref_type == 'tag' || contains(github.ref, 'Stable_' ) ] }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Get all tags for correct version determination
|
||||||
|
working-directory: ${{ github.workspace }}
|
||||||
|
run: |
|
||||||
|
git fetch --all --tags -f
|
||||||
|
|
||||||
|
- name: Install Qt
|
||||||
|
uses: jurplel/install-qt-action@v2
|
||||||
|
with:
|
||||||
|
version: ${{ env.QT_VERSION }}
|
||||||
|
host: linux
|
||||||
|
target: desktop
|
||||||
|
dir: ${{ runner.temp }}
|
||||||
|
modules: qtcharts
|
||||||
|
setup-python: true
|
||||||
|
|
||||||
|
- name: Install QGC source dependencies
|
||||||
|
run: sudo apt-get install -y libsdl2-dev
|
||||||
|
|
||||||
|
- name: Install Gstreamer
|
||||||
|
run: sudo apt-get install -y libgstreamer-plugins-base1.0-dev libgstreamer1.0-0:amd64 libgstreamer1.0-dev
|
||||||
|
|
||||||
|
- name: Install ccache
|
||||||
|
run: sudo apt-get install ccache
|
||||||
|
|
||||||
|
- name: Install post-link dependencies
|
||||||
|
run: sudo apt-get install -y binutils patchelf
|
||||||
|
|
||||||
|
- name: Prepare ccache timestamp
|
||||||
|
id: ccache_cache_timestamp
|
||||||
|
shell: cmake -P {0}
|
||||||
|
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@v2
|
||||||
|
with:
|
||||||
|
path: ~/.ccache
|
||||||
|
key: ${{ runner.os }}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
|
||||||
|
restore-keys: ${{ runner.os }}-ccache-
|
||||||
|
|
||||||
|
- name: Setup ccache
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.ccache
|
||||||
|
echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
|
||||||
|
echo "compression = true" >> ~/.ccache/ccache.conf
|
||||||
|
echo "compression_level = 5" >> ~/.ccache/ccache.conf
|
||||||
|
ccache -s
|
||||||
|
ccache -z
|
||||||
|
|
||||||
|
- name: Create build directory
|
||||||
|
run: mkdir ${{ runner.temp }}/shadow_build_dir
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir
|
||||||
|
run: |
|
||||||
|
qmake -r ${SOURCE_DIR}/qgroundcontrol.pro CONFIG+=installer CONFIG+=${BUILD_TYPE}
|
||||||
|
make -j2
|
||||||
|
|
||||||
|
- name: ccache post-run
|
||||||
|
run: ccache -s
|
||||||
|
|
||||||
|
- name: Create AppImage
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir
|
||||||
|
run: ${SOURCE_DIR}/deploy/create_linux_appimage.sh ${SOURCE_DIR} ./staging ./package;
|
||||||
|
|
||||||
|
- name: Save artifact
|
||||||
|
uses: actions/upload-artifact@master
|
||||||
|
with:
|
||||||
|
name: ${{ env.ARTIFACT }}
|
||||||
|
path: ${{ runner.temp }}/shadow_build_dir/package/${{ env.ARTIFACT }}
|
||||||
|
|
||||||
|
# This will set GIT_BRANCH_NAME environment variable
|
||||||
|
- name: Git branch name
|
||||||
|
id: git-branch-name
|
||||||
|
uses: EthanSK/git-branch-name-action@v1
|
||||||
|
|
||||||
|
- name: Upload build to S3 Bucket
|
||||||
|
if: github.event_name == 'push'
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir/package
|
||||||
|
run: |
|
||||||
|
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
aws s3 cp ${ARTIFACT} s3://qgroundcontrol/builds/${GIT_BRANCH_NAME}/${ARTIFACT} --region us-west-2 --acl public-read
|
||||||
|
|
||||||
|
- name: Upload tagged stable build to S3 latest Bucket
|
||||||
|
if: github.event_name == 'push' && github.ref_type == 'tag'
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir/package
|
||||||
|
run: |
|
||||||
|
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
aws s3 cp ${ARTIFACT} s3://qgroundcontrol/latest/${ARTIFACT} --region us-west-2 --acl public-read
|
|
@ -0,0 +1,122 @@
|
||||||
|
name: MacOS Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
- 'Stable*'
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
env:
|
||||||
|
SOURCE_DIR: ${{ github.workspace }}
|
||||||
|
QT_VERSION: 5.15.2
|
||||||
|
ARTIFACT: QGroundControl.dmg
|
||||||
|
BUILD_TYPE: ${{ fromJSON('["DailyBuild", "StableBuild"]')[ github.ref_type == 'tag' || contains(github.ref, 'Stable_' ) ] }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: macos-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Get all tags for correct version determination
|
||||||
|
working-directory: ${{ github.workspace }}
|
||||||
|
run: |
|
||||||
|
git fetch --all --tags -f
|
||||||
|
|
||||||
|
- name: Install Qt
|
||||||
|
uses: jurplel/install-qt-action@v3
|
||||||
|
with:
|
||||||
|
version: ${{ env.QT_VERSION }}
|
||||||
|
host: mac
|
||||||
|
target: desktop
|
||||||
|
dir: ${{ runner.temp }}
|
||||||
|
modules: qtcharts
|
||||||
|
setup-python: false
|
||||||
|
|
||||||
|
- name: Install Gstreamer
|
||||||
|
run: |
|
||||||
|
wget https://gstreamer.freedesktop.org/data/pkg/osx/1.18.1/gstreamer-1.0-devel-1.18.1-x86_64.pkg
|
||||||
|
wget https://gstreamer.freedesktop.org/data/pkg/osx/1.18.1/gstreamer-1.0-1.18.1-x86_64.pkg
|
||||||
|
for package in *.pkg ;
|
||||||
|
do sudo installer -verbose -pkg "$package" -target /
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Install ccache
|
||||||
|
run: brew install ccache
|
||||||
|
|
||||||
|
- name: Prepare ccache timestamp
|
||||||
|
id: ccache_cache_timestamp
|
||||||
|
shell: cmake -P {0}
|
||||||
|
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@v2
|
||||||
|
with:
|
||||||
|
path: ~/.ccache
|
||||||
|
key: ${{ runner.os }}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
|
||||||
|
restore-keys: ${{ runner.os }}-ccache-
|
||||||
|
|
||||||
|
- name: Setup ccache
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.ccache
|
||||||
|
echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf
|
||||||
|
echo "compression = true" >> ~/.ccache/ccache.conf
|
||||||
|
echo "compression_level = 5" >> ~/.ccache/ccache.conf
|
||||||
|
ccache -s
|
||||||
|
ccache -z
|
||||||
|
|
||||||
|
- name: Create build directory
|
||||||
|
run: mkdir ${{ runner.temp }}/shadow_build_dir
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir
|
||||||
|
run: |
|
||||||
|
export JOBS=$((`sysctl -n hw.ncpu`+1))
|
||||||
|
export LIBRARY_PATH=/Library/Frameworks/GStreamer.framework/Versions/1.0/lib/
|
||||||
|
qmake -r ${SOURCE_DIR}/qgroundcontrol.pro CONFIG+=installer CONFIG+=${BUILD_TYPE}
|
||||||
|
make -j$JOBS
|
||||||
|
|
||||||
|
- name: ccache post-run
|
||||||
|
run: ccache -s
|
||||||
|
|
||||||
|
- name: Save artifact
|
||||||
|
uses: actions/upload-artifact@master
|
||||||
|
with:
|
||||||
|
name: ${{ env.ARTIFACT }}
|
||||||
|
path: ${{ runner.temp }}/shadow_build_dir/package/${{ env.ARTIFACT }}
|
||||||
|
|
||||||
|
# This will set GIT_BRANCH_NAME environment variable
|
||||||
|
- name: Git branch name
|
||||||
|
id: git-branch-name
|
||||||
|
uses: EthanSK/git-branch-name-action@v1
|
||||||
|
|
||||||
|
- name: Upload build to S3 Bucket
|
||||||
|
if: github.event_name == 'push'
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir/package
|
||||||
|
run: |
|
||||||
|
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
aws s3 cp ${ARTIFACT} s3://qgroundcontrol/builds/${GIT_BRANCH_NAME}/${ARTIFACT} --region us-west-2 --acl public-read
|
||||||
|
|
||||||
|
- name: Upload tagged stable build to S3 latest Bucket
|
||||||
|
if: github.event_name == 'push' && github.ref_type == 'tag'
|
||||||
|
working-directory: ${{ runner.temp }}/shadow_build_dir/package
|
||||||
|
run: |
|
||||||
|
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
aws s3 cp ${ARTIFACT} s3://qgroundcontrol/latest/${ARTIFACT} --region us-west-2 --acl public-read
|
|
@ -0,0 +1,127 @@
|
||||||
|
name: Windows Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
- 'Stable*'
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: cmd
|
||||||
|
|
||||||
|
env:
|
||||||
|
SOURCE_DIR: ${{ github.workspace }}
|
||||||
|
QT_VERSION: 5.15.2
|
||||||
|
ARTIFACT: QGroundControl-installer.exe
|
||||||
|
BUILD_TYPE: ${{ fromJSON('["DailyBuild", "StableBuild"]')[ github.ref_type == 'tag' || contains(github.ref, 'Stable_' ) ] }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: windows-2019
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Get all tags for correct version determination
|
||||||
|
working-directory: ${{ github.workspace }}
|
||||||
|
run: |
|
||||||
|
git fetch --all --tags -f
|
||||||
|
|
||||||
|
- name: Install Qt
|
||||||
|
uses: jurplel/install-qt-action@v2
|
||||||
|
with:
|
||||||
|
version: ${{ env.QT_VERSION }}
|
||||||
|
host: windows
|
||||||
|
target: desktop
|
||||||
|
arch: win64_msvc2019_64
|
||||||
|
dir: ${{ runner.temp }}
|
||||||
|
modules: qtcharts
|
||||||
|
setup-python: false
|
||||||
|
|
||||||
|
- name: Download JOM
|
||||||
|
uses: suisei-cn/actions-download-file@v1.4.0
|
||||||
|
with:
|
||||||
|
url: http://download.qt.io/official_releases/jom/jom.zip
|
||||||
|
target: ${{ runner.temp }}\
|
||||||
|
retry-times: 10
|
||||||
|
|
||||||
|
- name: Unzip JOM
|
||||||
|
working-directory: ${{ runner.temp }}
|
||||||
|
run: |
|
||||||
|
7z x jom.zip -ojom
|
||||||
|
|
||||||
|
- name: Download Gstreamer
|
||||||
|
uses: suisei-cn/actions-download-file@v1.4.0
|
||||||
|
with:
|
||||||
|
url: https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-msvc-x86_64-1.18.1.msi
|
||||||
|
target: ${{ runner.temp }}\
|
||||||
|
retry-times: 10
|
||||||
|
|
||||||
|
- name: Download Gstreamer dev
|
||||||
|
uses: suisei-cn/actions-download-file@v1.4.0
|
||||||
|
with:
|
||||||
|
url: https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-devel-msvc-x86_64-1.18.1.msi
|
||||||
|
target: ${{ runner.temp }}\
|
||||||
|
retry-times: 10
|
||||||
|
|
||||||
|
- name: Install Gstreamer
|
||||||
|
run: |
|
||||||
|
cmd /c start /wait msiexec /package ${{ runner.temp }}\gstreamer-1.0-msvc-x86_64-1.18.1.msi /passive ADDLOCAL=ALL
|
||||||
|
cmd /c start /wait msiexec /package ${{ runner.temp }}\gstreamer-1.0-devel-msvc-x86_64-1.18.1.msi /passive ADDLOCAL=ALL
|
||||||
|
|
||||||
|
- name: Create build directory
|
||||||
|
run: mkdir ${{ runner.temp }}\shadow_build_dir
|
||||||
|
|
||||||
|
- name: Set up Visual Studio shell
|
||||||
|
uses: egor-tensin/vs-shell@v2
|
||||||
|
with:
|
||||||
|
arch: x64
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
working-directory: ${{ runner.temp }}\shadow_build_dir
|
||||||
|
run: |
|
||||||
|
qmake -r ${{ env.SOURCE_DIR }}\qgroundcontrol.pro CONFIG+=installer CONFIG+=${{ env. BUILD_TYPE }}
|
||||||
|
${{ runner.temp }}\jom\jom -j2
|
||||||
|
|
||||||
|
- name: Save installer artifact
|
||||||
|
uses: actions/upload-artifact@master
|
||||||
|
with:
|
||||||
|
name: ${{ env.ARTIFACT }}
|
||||||
|
path: ${{ runner.temp }}\shadow_build_dir\staging\${{ env.ARTIFACT }}
|
||||||
|
|
||||||
|
- name: Save PDB artifact
|
||||||
|
uses: actions/upload-artifact@master
|
||||||
|
with:
|
||||||
|
name: qgroundcontrol.pdb
|
||||||
|
path: ${{ runner.temp }}\shadow_build_dir\staging\qgroundcontrol.pdb
|
||||||
|
|
||||||
|
# This will set GIT_BRANCH_NAME environment variable
|
||||||
|
- name: Git branch name
|
||||||
|
id: git-branch-name
|
||||||
|
uses: EthanSK/git-branch-name-action@v1
|
||||||
|
|
||||||
|
- name: Upload build to S3 Bucket
|
||||||
|
if: github.event_name == 'push'
|
||||||
|
working-directory: ${{ runner.temp }}\shadow_build_dir\staging
|
||||||
|
run: |
|
||||||
|
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
aws s3 cp ${{ env.ARTIFACT }} s3://qgroundcontrol/builds/${{ env.GIT_BRANCH_NAME }}/${{ env.ARTIFACT }} --region us-west-2 --acl public-read
|
||||||
|
|
||||||
|
- name: Upload tagged stable build to S3 latest Bucket
|
||||||
|
if: github.event_name == 'push' && github.ref_type == 'tag'
|
||||||
|
working-directory: ${{ runner.temp }}\shadow_build_dir\staging
|
||||||
|
run: |
|
||||||
|
aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
aws s3 cp ${{ env.ARTIFACT }} s3://qgroundcontrol/latest/${{ env.ARTIFACT }} --region us-west-2 --acl public-read
|
||||||
|
|
|
@ -0,0 +1,91 @@
|
||||||
|
.idea/
|
||||||
|
.vscode/
|
||||||
|
cmake-build-*/
|
||||||
|
out/
|
||||||
|
libs/lib/Frameworks/GStreamer.framework
|
||||||
|
*_qmlcache.qrc
|
||||||
|
*.swp
|
||||||
|
*.nfs
|
||||||
|
CMakeFiles
|
||||||
|
tags
|
||||||
|
build*/
|
||||||
|
obj
|
||||||
|
.DS_Store
|
||||||
|
*.log
|
||||||
|
*~
|
||||||
|
*~.skp
|
||||||
|
bin/*.exe
|
||||||
|
bin/*.txt
|
||||||
|
bin/mac
|
||||||
|
*pro.user*
|
||||||
|
.qmake.stash
|
||||||
|
qrc_*.cpp
|
||||||
|
*.Debug
|
||||||
|
*.Release
|
||||||
|
tmp
|
||||||
|
debug
|
||||||
|
release
|
||||||
|
/qgroundcontrol
|
||||||
|
qgroundcontrol.xcodeproj/**
|
||||||
|
doc/html
|
||||||
|
doc/doxy.log
|
||||||
|
deploy/mac
|
||||||
|
deploy/linux
|
||||||
|
controller_log*
|
||||||
|
user_config.pri
|
||||||
|
*.app
|
||||||
|
*.ncb
|
||||||
|
*.vcproj
|
||||||
|
*.vcxproj*
|
||||||
|
*.sdf
|
||||||
|
*.ipch
|
||||||
|
*.pdb
|
||||||
|
*.sln
|
||||||
|
*.sln
|
||||||
|
*.vcproj
|
||||||
|
*.user
|
||||||
|
*.ncb
|
||||||
|
*.idb
|
||||||
|
*.project
|
||||||
|
*.cproject
|
||||||
|
*.sln
|
||||||
|
*.suo
|
||||||
|
*.uhf.txt
|
||||||
|
*.opensdf
|
||||||
|
thirdParty/qserialport-build-desktop/
|
||||||
|
thirdParty/qserialport/bin/
|
||||||
|
thirdParty/qserialport/lib/
|
||||||
|
libs/thirdParty/libxbee/lib/
|
||||||
|
GeneratedFiles/
|
||||||
|
gstreamer-1.0-android*
|
||||||
|
src/Airmap/Airmap_api_key.h
|
||||||
|
localization/qgroundcontrol/
|
||||||
|
|
||||||
|
*.autosave
|
||||||
|
.settings/
|
||||||
|
|
||||||
|
# iOS Generated files
|
||||||
|
ios/iOSForAppStore-Info.plist
|
||||||
|
|
||||||
|
# Generated files
|
||||||
|
moc_*
|
||||||
|
ui_*
|
||||||
|
*.o
|
||||||
|
*.moc
|
||||||
|
*.prl
|
||||||
|
|
||||||
|
# android
|
||||||
|
android/local.properties
|
||||||
|
android/gradle.properties
|
||||||
|
|
||||||
|
# doxygen
|
||||||
|
src/html/
|
||||||
|
src/latex/
|
||||||
|
|
||||||
|
# vagrant
|
||||||
|
.vagrant/
|
||||||
|
Qt*-linux*.tar.*
|
||||||
|
|
||||||
|
.vs/
|
||||||
|
|
||||||
|
libs/airmapd/include/boost
|
|
@ -0,0 +1,24 @@
|
||||||
|
[submodule "src/GPS/Drivers"]
|
||||||
|
path = src/GPS/Drivers
|
||||||
|
url = https://github.com/PX4/GpsDrivers.git
|
||||||
|
[submodule "libs/mavlink/include/mavlink/v2.0"]
|
||||||
|
path = libs/mavlink/include/mavlink/v2.0
|
||||||
|
url = https://github.com/mavlink/c_library_v2.git
|
||||||
|
[submodule "libs/OpenSSL/android_openssl"]
|
||||||
|
path = libs/OpenSSL/android_openssl
|
||||||
|
url = https://github.com/Auterion/android_openssl
|
||||||
|
[submodule "libs/qmlglsink/gst-plugins-good"]
|
||||||
|
path = libs/qmlglsink/gst-plugins-good
|
||||||
|
url = https://github.com/mavlink/gst-plugins-good.git
|
||||||
|
[submodule "libs/xz-embedded"]
|
||||||
|
path = libs/xz-embedded
|
||||||
|
url = https://github.com/Auterion/xz-embedded.git
|
||||||
|
[submodule "libs/libevents/libevents"]
|
||||||
|
path = libs/libevents/libevents
|
||||||
|
url = https://github.com/mavlink/libevents.git
|
||||||
|
[submodule "libs/eigen"]
|
||||||
|
path = libs/eigen
|
||||||
|
url = https://gitlab.com/libeigen/eigen.git
|
||||||
|
[submodule "libs/qmdnsengine"]
|
||||||
|
path = libs/qmdnsengine
|
||||||
|
url = https://github.com/patrickelectric/qmdnsengine
|
|
@ -0,0 +1,320 @@
|
||||||
|
# if you update this file, please consider updating Vagrantfile too
|
||||||
|
|
||||||
|
language: cpp
|
||||||
|
|
||||||
|
env:
|
||||||
|
global:
|
||||||
|
- JOBS=4
|
||||||
|
- SHADOW_BUILD_DIR=/tmp/shadow_build_dir
|
||||||
|
- CODESIGN=nocodesign
|
||||||
|
- secure: RGovyUnMw3fp/bHZi058JvANT1rYmNqrsuSYew0cIgirO6YbMHr/rsjwCm1FTYpBl8s1zgr+u2b8ftYnfnCz2YT+Aip4NWrVYpVU0FEmfytGILrnUS0pjlt8m7fU9AKR1ElOSll7yw7e1kftynN39Q321etvwbLZcXon6zz0suE=
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
fast_finish: true
|
||||||
|
include:
|
||||||
|
- stage: "Build"
|
||||||
|
name: "Linux Installer"
|
||||||
|
if: branch = master
|
||||||
|
os: linux
|
||||||
|
dist: bionic
|
||||||
|
env: SPEC=linux-g++-64 CONFIG=installer
|
||||||
|
sudo: required
|
||||||
|
- stage: "Build"
|
||||||
|
name: "Android 32 bit"
|
||||||
|
dist: xenial
|
||||||
|
language: android
|
||||||
|
env: SPEC=android-clang CONFIG=installer BITNESS=32 GSTREAMER_NAME=armv7
|
||||||
|
sudo: false
|
||||||
|
- stage: "Build"
|
||||||
|
name: "Android 64 bit"
|
||||||
|
dist: xenial
|
||||||
|
language: android
|
||||||
|
env: SPEC=android-clang CONFIG=installer BITNESS=64 GSTREAMER_NAME=arm64
|
||||||
|
sudo: false
|
||||||
|
- stage: "Build"
|
||||||
|
name: "OSX Installer"
|
||||||
|
if: branch = master
|
||||||
|
os: osx
|
||||||
|
osx_image: xcode11.3
|
||||||
|
env: SPEC=macx-clang CONFIG=installer
|
||||||
|
sudo: required
|
||||||
|
- stage: "Google Play Upload"
|
||||||
|
name: "Google Play Upload"
|
||||||
|
dist: trusty
|
||||||
|
language: android
|
||||||
|
env: SPEC=google-play-upload
|
||||||
|
sudo: false
|
||||||
|
before_install: skip
|
||||||
|
install: skip
|
||||||
|
before_script: skip
|
||||||
|
before_deploy: skip
|
||||||
|
after_deploy: skip
|
||||||
|
script: echo "Google Play Upload"
|
||||||
|
|
||||||
|
# iOS build needs updating Qt to > 5.10
|
||||||
|
# - os: osx
|
||||||
|
# osx_image: xcode9.2
|
||||||
|
# env: SPEC=macx-ios-clang CONFIG=release
|
||||||
|
# sudo: false
|
||||||
|
# OSX builds pared back to installer only since travis sucks so bad we can't afford more than one'
|
||||||
|
# - os: osx
|
||||||
|
# osx_image: xcode10.1
|
||||||
|
# env: SPEC=macx-clang CONFIG=debug
|
||||||
|
# sudo: required
|
||||||
|
|
||||||
|
android:
|
||||||
|
components:
|
||||||
|
- android-29
|
||||||
|
- build-tools-25.0.3
|
||||||
|
- platform-tools
|
||||||
|
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- speech-dispatcher
|
||||||
|
- libgstreamer-plugins-base1.0-dev
|
||||||
|
- libgstreamer1.0-0:amd64
|
||||||
|
- libgstreamer1.0-dev
|
||||||
|
- libudev-dev
|
||||||
|
- wget
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
# fetch entire git repo to properly determine the version
|
||||||
|
- cd ${TRAVIS_BUILD_DIR}
|
||||||
|
- git fetch --unshallow
|
||||||
|
- git fetch --all --tags
|
||||||
|
|
||||||
|
# compile threads
|
||||||
|
- if [ "${TRAVIS_OS_NAME}" = "linux" ]; then
|
||||||
|
export JOBS=$((`cat /proc/cpuinfo | grep -c ^processor`+1));
|
||||||
|
elif [ "${TRAVIS_OS_NAME}" = "osx" ]; then
|
||||||
|
export JOBS=$((`sysctl -n hw.ncpu`+1));
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Linux needs sdl2 but not android
|
||||||
|
- if [ "${SPEC}" = "linux-g++-64" ]; then
|
||||||
|
sudo apt-get install -y libsdl2-dev libxkbcommon-x11-0;
|
||||||
|
fi
|
||||||
|
|
||||||
|
install:
|
||||||
|
# linux dependencies: qt
|
||||||
|
- if [ "${SPEC}" = "linux-g++-64" ]; then
|
||||||
|
wget --quiet https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.12.6-gcc_64-min.tar.bz2 &&
|
||||||
|
tar jxf Qt5.12.6-gcc_64-min.tar.bz2 -C /tmp &&
|
||||||
|
export PATH=/tmp/Qt5.12-gcc_64/5.12.6/gcc_64/bin:$PATH
|
||||||
|
;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# android dependencies: qt, gstreamer, android-ndk
|
||||||
|
- if [ "${SPEC}" = "android-clang" ]; then
|
||||||
|
wget --quiet https://gstreamer.freedesktop.org/data/pkg/android/1.18.5/gstreamer-1.0-android-universal-1.18.5.tar.xz &&
|
||||||
|
mkdir gstreamer-1.0-android-universal-1.18.5 &&
|
||||||
|
tar xf gstreamer-1.0-android-universal-1.18.5.tar.xz -C gstreamer-1.0-android-universal-1.18.5 &&
|
||||||
|
wget --quiet https://dl.google.com/android/repository/android-ndk-r20-linux-x86_64.zip &&
|
||||||
|
unzip android-ndk-r20-linux-x86_64.zip > /dev/null &&
|
||||||
|
export ANDROID_NDK_ROOT=`pwd`/android-ndk-r20 &&
|
||||||
|
export ANDROID_SDK_ROOT=/usr/local/android-sdk &&
|
||||||
|
export PATH=`pwd`/android-ndk-r20:$PATH
|
||||||
|
;
|
||||||
|
fi
|
||||||
|
|
||||||
|
- if [[ "${SPEC}" = "android-clang" && "${BITNESS}" = "64" ]]; then
|
||||||
|
wget --quiet https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.12.6-android_arm64_v8a-min.tar.bz2 &&
|
||||||
|
tar jxf Qt5.12.6-android_arm64_v8a-min.tar.bz2 -C /tmp &&
|
||||||
|
export PATH=/tmp/Qt5.12-android_arm64_v8a/5.12.6/android_arm64_v8a/bin:$PATH
|
||||||
|
;
|
||||||
|
fi
|
||||||
|
|
||||||
|
- if [[ "${SPEC}" = "android-clang" && "${BITNESS}" = "32" ]]; then
|
||||||
|
wget --quiet https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.12.6-android_armv7-min.tar.bz2 &&
|
||||||
|
tar jxf Qt5.12.6-android_armv7-min.tar.bz2 -C /tmp &&
|
||||||
|
export PATH=/tmp/Qt5.12-android_armv7/5.12.6/android_armv7/bin:$PATH
|
||||||
|
;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# osx dependencies: qt (master builds only: gstreamer, gstreamer-devel)
|
||||||
|
- if [ "${SPEC}" = "macx-clang" ]; then
|
||||||
|
wget --quiet https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.12.6-clang_64-min.tar.bz2 &&
|
||||||
|
tar jxf Qt5.12.6-clang_64-min.tar.bz2 -C /tmp
|
||||||
|
;
|
||||||
|
fi
|
||||||
|
|
||||||
|
- if [[ "${SPEC}" = "macx-clang" ]]; then
|
||||||
|
wget --quiet https://qgroundcontrol.s3-us-west-2.amazonaws.com/dependencies/gstreamer-osx-1.18.1.tar.bz2 &&
|
||||||
|
sudo tar zxf gstreamer-osx-1.18.1.tar.bz2 -C /Library/Frameworks
|
||||||
|
;
|
||||||
|
fi
|
||||||
|
|
||||||
|
- if [ "${SPEC}" = "macx-clang" ]; then
|
||||||
|
export QT_DIR=Qt5.12-clang_64/5.12.6/clang_64 &&
|
||||||
|
export QT_QPA_PLATFORM_PLUGIN_PATH=/tmp/$QT_DIR/plugins &&
|
||||||
|
export QML2_IMPORT_PATH=/tmp/$QT_DIR/qml &&
|
||||||
|
export PATH=/tmp/$QT_DIR/bin:$PATH
|
||||||
|
;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ios dependencies: qt
|
||||||
|
- if [ "${SPEC}" = "macx-ios-clang" ]; then
|
||||||
|
wget --quiet https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.9.3-ios-min.tar.bz2
|
||||||
|
;
|
||||||
|
fi
|
||||||
|
- if [ "${SPEC}" = "macx-ios-clang" ]; then
|
||||||
|
tar jxf Qt5.9.3-ios-min.tar.bz2 -C /tmp &&
|
||||||
|
export IOS_CCACHE_CC=`/usr/bin/xcrun -sdk iphoneos -find clang` &&
|
||||||
|
export IOS_CCACHE_CXX=`/usr/bin/xcrun -sdk iphoneos -find clang++` &&
|
||||||
|
export PATH=/tmp/Qt5.9-ios/5.9.3/ios/bin:$PATH
|
||||||
|
;
|
||||||
|
fi
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- cd ${TRAVIS_BUILD_DIR}
|
||||||
|
|
||||||
|
# switch android config from installer to release if the android storepass isn't available
|
||||||
|
- if [[ "${SPEC}" = "android-clang" && "${CONFIG}" = "installer" && -z ${ANDROID_STOREPASS} ]]; then
|
||||||
|
export CONFIG=release;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Update QGC version in AndroidManifest.xml based on git tag. We do not do this on pull requests
|
||||||
|
# since it is likely the tags out out of date on the pull and may cause an error.
|
||||||
|
- if [ "${SPEC}" = "android-clang" && "${TRAVIS_PULL_REQUEST}" = "false" ]]; then
|
||||||
|
git remote set-branches origin 'master' &&
|
||||||
|
git fetch --tags origin master &&
|
||||||
|
./tools/update_android_version.sh ${BITNESS} ${TRAVIS_BRANCH};
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install signing cert into OSX keychain
|
||||||
|
- if [[ "${SPEC}" = "macx-clang" && "${TRAVIS_PULL_REQUEST}" = "false" ]]; then
|
||||||
|
export CODESIGN=codesign;
|
||||||
|
fi
|
||||||
|
- if [[ "${SPEC}" = "macx-clang" && "${TRAVIS_PULL_REQUEST}" = "false" ]]; then
|
||||||
|
openssl aes-256-cbc -K $MAC_CERT_KEY -iv $MAC_CERT_IV -in deploy/MacCertificates.p12.enc -out deploy/MacCertificates.p12 -d;
|
||||||
|
fi
|
||||||
|
- if [[ "${SPEC}" = "macx-clang" && "${TRAVIS_PULL_REQUEST}" = "false" ]]; then
|
||||||
|
source deploy/MacImportCert.sh;
|
||||||
|
fi
|
||||||
|
|
||||||
|
script:
|
||||||
|
# run qmake
|
||||||
|
- mkdir ${SHADOW_BUILD_DIR} && cd ${SHADOW_BUILD_DIR}
|
||||||
|
- if [ "${TRAVIS_TAG}" ]; then
|
||||||
|
echo "Stable build" &&
|
||||||
|
export STABLE_OR_DAILY=StableBuild;
|
||||||
|
else
|
||||||
|
echo "Daily build" &&
|
||||||
|
export STABLE_OR_DAILY=DailyBuild;
|
||||||
|
fi
|
||||||
|
- qmake -r ${TRAVIS_BUILD_DIR}/qgroundcontrol.pro CONFIG+=${CONFIG} CONFIG+=${STABLE_OR_DAILY} CONFIG+=${CODESIGN} -spec ${SPEC};
|
||||||
|
|
||||||
|
# compile
|
||||||
|
- if [ "${SPEC}" != "macx-ios-clang" ]; then
|
||||||
|
make -j$JOBS;
|
||||||
|
else
|
||||||
|
xcodebuild -IDEBuildOperationMaxNumberOfConcurrentCompileTasks=$JOBS -configuration Release CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO | xcpretty -c && $(exit ${PIPESTATUS[0]});
|
||||||
|
fi
|
||||||
|
#- ccache -s
|
||||||
|
|
||||||
|
# unit tests linux
|
||||||
|
- if [[ "${SPEC}" = "linux-g++-64" && "${CONFIG}" = "debug" ]]; then
|
||||||
|
mkdir -p ~/.config/QtProject/ &&
|
||||||
|
cp ${TRAVIS_BUILD_DIR}/test/qtlogging.ini ~/.config/QtProject/ &&
|
||||||
|
export QT_FATAL_WARNINGS=1 &&
|
||||||
|
./staging/qgroundcontrol-start.sh --unittest;
|
||||||
|
fi
|
||||||
|
|
||||||
|
after_success:
|
||||||
|
# This is only used to upload android builds to Google Play
|
||||||
|
- cd ${TRAVIS_BUILD_DIR}
|
||||||
|
- if [ "${TRAVIS_TAG}" ]; then
|
||||||
|
GOOGLE_PLAY_PKG=org.mavlink.qgroundcontrol;
|
||||||
|
elif [ "${TRAVIS_BRANCH}" = "master" ]; then
|
||||||
|
GOOGLE_PLAY_PKG=org.mavlink.qgroundcontrolbeta;
|
||||||
|
else
|
||||||
|
GOOGLE_PLAY_PKG=none;
|
||||||
|
fi
|
||||||
|
- if [[ "${SPEC}" = "google-play-upload" && "${TRAVIS_PULL_REQUEST}" = "false" && "${GOOGLE_PLAY_PKG}" != "none" ]]; then
|
||||||
|
wget --quiet https://s3-us-west-2.amazonaws.com/qgroundcontrol/builds/${TRAVIS_BRANCH}/QGroundControl32.apk &&
|
||||||
|
wget --quiet https://s3-us-west-2.amazonaws.com/qgroundcontrol/builds/${TRAVIS_BRANCH}/QGroundControl64.apk &&
|
||||||
|
pip install --user --upgrade oauth2client &&
|
||||||
|
pip install --user google-api-python-client pyopenssl ndg-httpsclient pyasn1 &&
|
||||||
|
openssl aes-256-cbc -K $encrypted_25db6eb7c3fd_key -iv $encrypted_25db6eb7c3fd_iv -in android/Google_Play_Android_Developer-4432a3c4f5d1.json.enc -out android/Google_Play_Android_Developer-4432a3c4f5d1.json -d &&
|
||||||
|
./deploy/GooglePlayUpload.py ${GOOGLE_PLAY_PKG};
|
||||||
|
fi
|
||||||
|
|
||||||
|
before_deploy:
|
||||||
|
# create linux appimage
|
||||||
|
- cd ${TRAVIS_BUILD_DIR}
|
||||||
|
- if [[ "${SPEC}" = "linux-g++-64" && "${CONFIG}" = "installer" ]]; then
|
||||||
|
./deploy/create_linux_appimage.sh ${TRAVIS_BUILD_DIR} ${SHADOW_BUILD_DIR}/staging ${SHADOW_BUILD_DIR}/package;
|
||||||
|
fi
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
# deploy installers to s3 builds/ if on a branch
|
||||||
|
- provider: s3
|
||||||
|
edge: true # Use V2 provider to work around V1 bug
|
||||||
|
access_key_id: AKIAIVORNALE7NHD3T6Q
|
||||||
|
secret_access_key:
|
||||||
|
secure: BsLXeXUPsCJdX4tawrDnO8OFK5Hk4kzlDTiyH93En6TbjUargVAWDMcHVj7TUhr7+3Tao1W1zb0G4SJe9kHv+jrky0yE72KvoG3YAON0VXWKizxBAKkgHE2RxSTNAwDeKbi2G6YJfNDescBBfX7zEohShdXglQu7CGaUQKRaiI4=
|
||||||
|
bucket: qgroundcontrol
|
||||||
|
local_dir: ${SHADOW_BUILD_DIR}/package
|
||||||
|
upload-dir: builds/${TRAVIS_BRANCH}
|
||||||
|
acl: public_read
|
||||||
|
region: us-west-2
|
||||||
|
skip_cleanup: true
|
||||||
|
on:
|
||||||
|
all_branches: true
|
||||||
|
condition: $CONFIG = installer
|
||||||
|
|
||||||
|
# deploy tagged installers to s3 latest/
|
||||||
|
- provider: s3
|
||||||
|
edge: true # Use V2 provider to work around V1 bug
|
||||||
|
access_key_id: AKIAIVORNALE7NHD3T6Q
|
||||||
|
secret_access_key:
|
||||||
|
secure: BsLXeXUPsCJdX4tawrDnO8OFK5Hk4kzlDTiyH93En6TbjUargVAWDMcHVj7TUhr7+3Tao1W1zb0G4SJe9kHv+jrky0yE72KvoG3YAON0VXWKizxBAKkgHE2RxSTNAwDeKbi2G6YJfNDescBBfX7zEohShdXglQu7CGaUQKRaiI4=
|
||||||
|
bucket: qgroundcontrol
|
||||||
|
local_dir: ${SHADOW_BUILD_DIR}/package
|
||||||
|
upload-dir: latest
|
||||||
|
acl: public_read
|
||||||
|
region: us-west-2
|
||||||
|
skip_cleanup: true
|
||||||
|
on:
|
||||||
|
tags: true
|
||||||
|
condition: $CONFIG = installer
|
||||||
|
|
||||||
|
# deploy tagged installers to s3 version folder
|
||||||
|
- provider: s3
|
||||||
|
edge: true # Use V2 provider to work around V1 bug
|
||||||
|
access_key_id: AKIAIVORNALE7NHD3T6Q
|
||||||
|
secret_access_key:
|
||||||
|
secure: BsLXeXUPsCJdX4tawrDnO8OFK5Hk4kzlDTiyH93En6TbjUargVAWDMcHVj7TUhr7+3Tao1W1zb0G4SJe9kHv+jrky0yE72KvoG3YAON0VXWKizxBAKkgHE2RxSTNAwDeKbi2G6YJfNDescBBfX7zEohShdXglQu7CGaUQKRaiI4=
|
||||||
|
bucket: qgroundcontrol
|
||||||
|
local_dir: ${SHADOW_BUILD_DIR}/package
|
||||||
|
upload-dir: ${TRAVIS_BRANCH}
|
||||||
|
acl: public_read
|
||||||
|
region: us-west-2
|
||||||
|
skip_cleanup: true
|
||||||
|
on:
|
||||||
|
tags: true
|
||||||
|
condition: $CONFIG = installer
|
||||||
|
|
||||||
|
# deploy installers to Github releases if on a tag
|
||||||
|
- provider: releases
|
||||||
|
edge: true # Use V2 provider to work around V1 bug
|
||||||
|
api-key:
|
||||||
|
secure: K/Zqr/FCC7QvzFxYvBtCinPkacQq2ubJ2qm982+38Zf/KjibVOF1dEbVdrGZmII6Tg5DaQzNXGYkg5PvYmJgT9xRsqeQjeYIUYqYZpAt+HYWA38AVfMU8jip/1P1wmwqD469nzJOBBa8yfsMs6Ca7tBaNl/zTxCRGnAgEzqtkdQ=
|
||||||
|
file_glob: true
|
||||||
|
file:
|
||||||
|
- ${SHADOW_BUILD_DIR}/qgc-app/package/qgroundcontrol.*
|
||||||
|
- ${SHADOW_BUILD_DIR}/qgc-app/package/QGroundControl.*
|
||||||
|
skip_cleanup: true
|
||||||
|
on:
|
||||||
|
tags: true
|
||||||
|
condition: $CONFIG = installer
|
||||||
|
condition: $SPEC != macx-clang # GitHub OSX deploy broken due to travis problem
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
webhooks:
|
||||||
|
urls:
|
||||||
|
- https://webhooks.gitter.im/e/60b033428ae9dc715662
|
||||||
|
on_success: change
|
||||||
|
on_failure: always
|
||||||
|
on_start: never
|
|
@ -0,0 +1,21 @@
|
||||||
|
configs:
|
||||||
|
dev:
|
||||||
|
'qt_deps_unpack_parent_dir': '/home/vagrant'
|
||||||
|
|
||||||
|
'qt_deps_unpack_dir': '/home/vagrant/Qt'
|
||||||
|
'qt_deps_bin_unpack_dir': '/home/vagrant/Qt/5.15.2/gcc_64/bin'
|
||||||
|
'qt_deps_lib_unpack_dir': '/home/vagrant/Qt/5.15.2/gcc_64/lib'
|
||||||
|
'qt_deps_plugins_unpack_dir': '/home/vagrant/Qt/5.15.2/gcc_64/plugins'
|
||||||
|
'qt_deps_qml_unpack_dir': '/home/vagrant/Qt/5.15.2/gcc_64/qml'
|
||||||
|
|
||||||
|
'project_root_dir': '/vagrant'
|
||||||
|
|
||||||
|
'qt_deps_dir': '/vagrant/shadow-build/release/Qt'
|
||||||
|
'qt_deps_bin_dir': '/vagrant/shadow-build/release/Qt/bin'
|
||||||
|
'qt_deps_lib_dir': '/vagrant/shadow-build/release/Qt/libs'
|
||||||
|
'qt_deps_plugins_dir': '/vagrant/shadow-build/release/Qt/plugins'
|
||||||
|
'qt_deps_qml_dir': '/vagrant/shadow-build/release/Qt/qml'
|
||||||
|
|
||||||
|
'spec': 'linux-g++-64'
|
||||||
|
'shadow_build_dir': '/vagrant/shadow-build'
|
||||||
|
'pro': '/vagrant/qgroundcontrol.pro'
|
|
@ -0,0 +1,155 @@
|
||||||
|
# This file is NOT licensed under the GPLv3, which is the license for the rest
|
||||||
|
# of YouCompleteMe.
|
||||||
|
#
|
||||||
|
# Here's the license text for this file:
|
||||||
|
#
|
||||||
|
# This is free and unencumbered software released into the public domain.
|
||||||
|
#
|
||||||
|
# Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||||
|
# distribute this software, either in source code form or as a compiled
|
||||||
|
# binary, for any purpose, commercial or non-commercial, and by any
|
||||||
|
# means.
|
||||||
|
#
|
||||||
|
# In jurisdictions that recognize copyright laws, the author or authors
|
||||||
|
# of this software dedicate any and all copyright interest in the
|
||||||
|
# software to the public domain. We make this dedication for the benefit
|
||||||
|
# of the public at large and to the detriment of our heirs and
|
||||||
|
# successors. We intend this dedication to be an overt act of
|
||||||
|
# relinquishment in perpetuity of all present and future rights to this
|
||||||
|
# software under copyright law.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
# For more information, please refer to <http://unlicense.org/>
|
||||||
|
|
||||||
|
import os
|
||||||
|
import ycm_core
|
||||||
|
from clang_helpers import PrepareClangFlags
|
||||||
|
|
||||||
|
# Set this to the absolute path to the folder (NOT the file!) containing the
|
||||||
|
# compile_commands.json file to use that instead of 'flags'. See here for
|
||||||
|
# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html
|
||||||
|
# Most projects will NOT need to set this to anything; you can just change the
|
||||||
|
# 'flags' list of compilation flags. Notice that YCM itself uses that approach.
|
||||||
|
compilation_database_folder = ''
|
||||||
|
|
||||||
|
# These are the compilation flags that will be used in case there's no
|
||||||
|
# compilation database set.
|
||||||
|
flags = [
|
||||||
|
# THIS IS IMPORTANT! Without a "-std=<something>" flag, clang won't know which
|
||||||
|
# language to use when compiling headers. So it will guess. Badly. So C++
|
||||||
|
# headers will be compiled as C headers. You don't want that so ALWAYS specify
|
||||||
|
# a "-std=<something>".
|
||||||
|
# For a C project, you would set this to something like 'c99' instead of
|
||||||
|
# 'c++11'.
|
||||||
|
'-std=c++11',
|
||||||
|
# ...and the same thing goes for the magic -x option which specifies the
|
||||||
|
# language that the files to be compiled are written in. This is mostly
|
||||||
|
# relevant for c++ headers.
|
||||||
|
# For a C project, you would set this to 'c' instead of 'c++'.
|
||||||
|
'-x',
|
||||||
|
'c++',
|
||||||
|
'-DQT_CORE_LIB',
|
||||||
|
'-DQT_GUI_LIB',
|
||||||
|
'-DQT_NETWORK_LIB',
|
||||||
|
'-DQT_QML_LIB',
|
||||||
|
'-DQT_QUICK_LIB',
|
||||||
|
'-DQT_SQL_LIB',
|
||||||
|
'-DQT_WIDGETS_LIB',
|
||||||
|
'-DQT_XML_LIB',
|
||||||
|
|
||||||
|
'-I', '/usr/lib/qt/mkspecs/linux-clang',
|
||||||
|
'-I', '/usr/include/qt',
|
||||||
|
'-I', '/usr/include/qt/QtConcurrent',
|
||||||
|
'-I', '/usr/include/qt/QtCore',
|
||||||
|
'-I', '/usr/include/qt/QtDBus',
|
||||||
|
'-I', '/usr/include/qt/QtGui',
|
||||||
|
'-I', '/usr/include/qt/QtHelp',
|
||||||
|
'-I', '/usr/include/qt/QtMultimedia',
|
||||||
|
'-I', '/usr/include/qt/QtMultimediaWidgets',
|
||||||
|
'-I', '/usr/include/qt/QtNetwork',
|
||||||
|
'-I', '/usr/include/qt/QtOpenGL',
|
||||||
|
'-I', '/usr/include/qt/QtPlatformSupport',
|
||||||
|
'-I', '/usr/include/qt/QtPositioning',
|
||||||
|
'-I', '/usr/include/qt/QtScript',
|
||||||
|
'-I', '/usr/include/qt/QtScriptTools',
|
||||||
|
'-I', '/usr/include/qt/QtSql',
|
||||||
|
'-I', '/usr/include/qt/QtSvg',
|
||||||
|
'-I', '/usr/include/qt/QtTest',
|
||||||
|
'-I', '/usr/include/qt/QtUiTools',
|
||||||
|
'-I', '/usr/include/qt/QtV8',
|
||||||
|
'-I', '/usr/include/qt/QtWebKit',
|
||||||
|
'-I', '/usr/include/qt/QtWebKitWidgets',
|
||||||
|
'-I', '/usr/include/qt/QtWidgets',
|
||||||
|
'-I', '/usr/include/qt/QtXml',
|
||||||
|
'-I', '/usr/include/qt/QtXmlPatterns',
|
||||||
|
|
||||||
|
'-I', '.',
|
||||||
|
'-I', 'Tests',
|
||||||
|
'-I', 'build',
|
||||||
|
'-I', 'build/Tests'
|
||||||
|
]
|
||||||
|
|
||||||
|
if compilation_database_folder:
|
||||||
|
database = ycm_core.CompilationDatabase( compilation_database_folder )
|
||||||
|
else:
|
||||||
|
database = None
|
||||||
|
|
||||||
|
|
||||||
|
def DirectoryOfThisScript():
|
||||||
|
return os.path.dirname( os.path.abspath( __file__ ) )
|
||||||
|
|
||||||
|
|
||||||
|
def MakeRelativePathsInFlagsAbsolute( flags, working_directory ):
|
||||||
|
if not working_directory:
|
||||||
|
return flags
|
||||||
|
new_flags = []
|
||||||
|
make_next_absolute = False
|
||||||
|
path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]
|
||||||
|
for flag in flags:
|
||||||
|
new_flag = flag
|
||||||
|
|
||||||
|
if make_next_absolute:
|
||||||
|
make_next_absolute = False
|
||||||
|
if not flag.startswith( '/' ):
|
||||||
|
new_flag = os.path.join( working_directory, flag )
|
||||||
|
|
||||||
|
for path_flag in path_flags:
|
||||||
|
if flag == path_flag:
|
||||||
|
make_next_absolute = True
|
||||||
|
break
|
||||||
|
|
||||||
|
if flag.startswith( path_flag ):
|
||||||
|
path = flag[ len( path_flag ): ]
|
||||||
|
new_flag = path_flag + os.path.join( working_directory, path )
|
||||||
|
break
|
||||||
|
|
||||||
|
if new_flag:
|
||||||
|
new_flags.append( new_flag )
|
||||||
|
return new_flags
|
||||||
|
|
||||||
|
|
||||||
|
def FlagsForFile( filename ):
|
||||||
|
if database:
|
||||||
|
# Bear in mind that compilation_info.compiler_flags_ does NOT return a
|
||||||
|
# python list, but a "list-like" StringVec object
|
||||||
|
compilation_info = database.GetCompilationInfoForFile( filename )
|
||||||
|
final_flags = PrepareClangFlags(
|
||||||
|
MakeRelativePathsInFlagsAbsolute(
|
||||||
|
compilation_info.compiler_flags_,
|
||||||
|
compilation_info.compiler_working_dir_ ),
|
||||||
|
filename )
|
||||||
|
else:
|
||||||
|
relative_to = DirectoryOfThisScript()
|
||||||
|
final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to )
|
||||||
|
|
||||||
|
return {
|
||||||
|
'flags': final_flags,
|
||||||
|
'do_cache': True
|
||||||
|
}
|
71
README.md
|
@ -1,15 +1,16 @@
|
||||||
# Spiri Ground Control Station
|
# QGroundControl Ground Control Station
|
||||||
|
|
||||||
[![Releases](https://git.spirirobotics.com/hetongapp/Spiri-App/raw/branch/master/Spiri/resources/images/Spiri-release.svg)](https://git.spirirobotics.com/hetongapp/Spiri-App/releases)
|
[![Releases](https://img.shields.io/github/release/mavlink/QGroundControl.svg)](https://github.com/mavlink/QGroundControl/releases)
|
||||||
[![Travis Build Status](https://travis-ci.org/mavlink/qgroundcontrol.svg?branch=master)](https://travis-ci.org/mavlink/qgroundcontrol)
|
[![Travis Build Status](https://travis-ci.org/mavlink/qgroundcontrol.svg?branch=master)](https://travis-ci.org/mavlink/qgroundcontrol)
|
||||||
[![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/crxcm4qayejuvh6c/branch/master?svg=true)](https://ci.appveyor.com/project/mavlink/qgroundcontrol)
|
[![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/crxcm4qayejuvh6c/branch/master?svg=true)](https://ci.appveyor.com/project/mavlink/qgroundcontrol)
|
||||||
|
|
||||||
|
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mavlink/qgroundcontrol?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||||
|
|
||||||
|
|
||||||
*Spiri GroundControl* (SGC) is an intuitive and powerful ground control station (GCS) for UAVs.
|
*QGroundControl* (QGC) is an intuitive and powerful ground control station (GCS) for UAVs.
|
||||||
|
|
||||||
The primary goal of SGC is ease of use for both first time and professional users.
|
The primary goal of QGC is ease of use for both first time and professional users.
|
||||||
It provides full flight control and mission planning for any MAVLink enabled drone, and vehicle setup for both PX4 and ArduPilot powered UAVs. Instructions for *using Spiri GroundControl* are provided in the [User Manual](https://docs.qgroundcontrol.com/en/) (you may not need them because the UI is very intuitive!)
|
It provides full flight control and mission planning for any MAVLink enabled drone, and vehicle setup for both PX4 and ArduPilot powered UAVs. Instructions for *using QGroundControl* are provided in the [User Manual](https://docs.qgroundcontrol.com/en/) (you may not need them because the UI is very intuitive!)
|
||||||
|
|
||||||
All the code is open-source, so you can contribute and evolve it as you want.
|
All the code is open-source, so you can contribute and evolve it as you want.
|
||||||
The [Developer Guide](https://dev.qgroundcontrol.com/en/) explains how to [build](https://dev.qgroundcontrol.com/en/getting_started/) and extend QGC.
|
The [Developer Guide](https://dev.qgroundcontrol.com/en/) explains how to [build](https://dev.qgroundcontrol.com/en/getting_started/) and extend QGC.
|
||||||
|
@ -22,63 +23,3 @@ Key Links:
|
||||||
* [Discussion/Support](https://docs.qgroundcontrol.com/en/Support/Support.html)
|
* [Discussion/Support](https://docs.qgroundcontrol.com/en/Support/Support.html)
|
||||||
* [Contributing](https://dev.qgroundcontrol.com/en/contribute/)
|
* [Contributing](https://dev.qgroundcontrol.com/en/contribute/)
|
||||||
* [License](https://github.com/mavlink/qgroundcontrol/blob/master/COPYING.md)
|
* [License](https://github.com/mavlink/qgroundcontrol/blob/master/COPYING.md)
|
||||||
|
|
||||||
|
|
||||||
# Setup Installation (Windows)
|
|
||||||
|
|
||||||
*Install QT 5.15.2
|
|
||||||
* Here is the link and Download: [Website](https://download.qt.io/official_releases/online_installers/) (Windows)
|
|
||||||
* Setup the environment for QT!
|
|
||||||
* 1. right click the desktop and click the attribution.
|
|
||||||
* 2. select the "Advanced System Settings"
|
|
||||||
* 3. select the "Environment Variables"
|
|
||||||
* 4. create a new qt system variable(using your own QT install Path) (eg. D:\QT5.15.2\5.15.2\msvc2019_64)
|
|
||||||
|
|
||||||
*Install Spiri QGC
|
|
||||||
* create a folder in your workspace and name it such as "Spiri"
|
|
||||||
* git clone https://git.spirirobotics.com/hetongapp/SpiriGroundControl.git
|
|
||||||
* Then cd to the "Spiri/SpiriGroundControl" and update the repo: "git submodule update --init --recursive".
|
|
||||||
* Open the "qgroundcontrol.pro" in "Spiri/SpiriGroundControl" folder by using the QT creator
|
|
||||||
* click "build" and "run"
|
|
||||||
|
|
||||||
|
|
||||||
# Setup Installation (MacOS)
|
|
||||||
|
|
||||||
* Install the Xcode in Apple Store
|
|
||||||
* Install Qt Creator for macOS: [Website](https://info.qt.io/zh-cn/download-qt-for-application-development)
|
|
||||||
* Create or open a Qt project and check the "iphonesimulator-clang-..." environment in the project configuration page
|
|
||||||
* create a folder in your workspace and name it such as "Spiri"
|
|
||||||
* git clone https://git.spirirobotics.com/hetongapp/SpiriGroundControl.git
|
|
||||||
* Then cd to the "Spiri/SpiriGroundControl" and update the repo: "git submodule update --init --recursive".
|
|
||||||
* Click the hammer compile button in the lower left corner, after the compilation is successful, you can close Qt Creator.
|
|
||||||
* After the compilation is complete, there will be an "Info.plist" file in the output folder, open it with Xcode.
|
|
||||||
|
|
||||||
|
|
||||||
# Setup Installation (Ubuntu20.04)
|
|
||||||
|
|
||||||
*Install QT 5.15.2
|
|
||||||
* Setup the environment for QT!
|
|
||||||
```bash
|
|
||||||
sudo chmod u+x ./Ubuntu_QT_install.sh && source ./Ubuntu_QT_install.sh
|
|
||||||
```
|
|
||||||
*Install Spiri QGC
|
|
||||||
* create a folder in your workspace and name it such as "Spiri"
|
|
||||||
* git clone https://git.spirirobotics.com/Spiri/SpiriGroundControlTest.git
|
|
||||||
* Then cd to the "Spiri/SpiriGroundControlTest" and update the repo: "git submodule update --init --recursive".
|
|
||||||
* Open the "qgroundcontrol.pro" in "Spiri/SpiriGroundControlTest" folder by using the QT creator
|
|
||||||
* click "build" and "run"
|
|
||||||
|
|
||||||
|
|
||||||
# Branch naming rules
|
|
||||||
|
|
||||||
* Dev-AndroidAPP-Tong
|
|
||||||
* Bug-AndroidAPP-Tong
|
|
||||||
* Rev-AndroidAPP-Tong
|
|
||||||
|
|
||||||
Note:
|
|
||||||
|
|
||||||
* Dev:This branch is for develop
|
|
||||||
* Bug: This branch is for bug fix
|
|
||||||
* Rev: This branch is for revision
|
|
||||||
* Tong:Contributer's name
|
|
||||||
* AndroidAPP:The general description of this task
|
|
|
@ -1,69 +0,0 @@
|
||||||
# Spiri Ground Control Station
|
|
||||||
|
|
||||||
[![Releases](https://img.shields.io/github/release/mavlink/QGroundControl.svg)](https://git.spirirobotics.com/hetongapp/SpiriGroundControl/releases)
|
|
||||||
[![Travis Build Status](https://travis-ci.org/mavlink/qgroundcontrol.svg?branch=master)](https://travis-ci.org/mavlink/qgroundcontrol)
|
|
||||||
[![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/crxcm4qayejuvh6c/branch/master?svg=true)](https://ci.appveyor.com/project/mavlink/qgroundcontrol)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
*Spiri GroundControl* (SGC) is an intuitive and powerful ground control station (GCS) for UAVs.
|
|
||||||
|
|
||||||
The primary goal of SGC is ease of use for both first time and professional users.
|
|
||||||
It provides full flight control and mission planning for any MAVLink enabled drone, and vehicle setup for both PX4 and ArduPilot powered UAVs. Instructions for *using Spiri GroundControl* are provided in the [User Manual](https://docs.qgroundcontrol.com/en/) (you may not need them because the UI is very intuitive!)
|
|
||||||
|
|
||||||
All the code is open-source, so you can contribute and evolve it as you want.
|
|
||||||
The [Developer Guide](https://dev.qgroundcontrol.com/en/) explains how to [build](https://dev.qgroundcontrol.com/en/getting_started/) and extend QGC.
|
|
||||||
|
|
||||||
|
|
||||||
Key Links:
|
|
||||||
* [Website](http://qgroundcontrol.com) (qgroundcontrol.com)
|
|
||||||
* [User Manual](https://docs.qgroundcontrol.com/en/)
|
|
||||||
* [Developer Guide](https://dev.qgroundcontrol.com/en/)
|
|
||||||
* [Discussion/Support](https://docs.qgroundcontrol.com/en/Support/Support.html)
|
|
||||||
* [Contributing](https://dev.qgroundcontrol.com/en/contribute/)
|
|
||||||
* [License](https://github.com/mavlink/qgroundcontrol/blob/master/COPYING.md)
|
|
||||||
|
|
||||||
|
|
||||||
# Setup Installation (Windows)
|
|
||||||
|
|
||||||
*Install QT 5.15.2
|
|
||||||
* Here is the link and Download: [Website](https://download.qt.io/official_releases/online_installers/) (Windows)
|
|
||||||
* Setup the environment for QT!
|
|
||||||
* 1. right click the desktop and click the attribution.
|
|
||||||
* 2. select the "Advanced System Settings"
|
|
||||||
* 3. select the "Environment Variables"
|
|
||||||
* 4. create a new qt system variable(using your own QT install Path) (eg. D:\QT5.15.2\5.15.2\msvc2019_64)
|
|
||||||
|
|
||||||
*Install Spiri QGC
|
|
||||||
* create a folder in your workspace and name it such as "Spiri"
|
|
||||||
* git clone https://git.spirirobotics.com/hetongapp/SpiriGroundControl.git
|
|
||||||
* Then cd to the "Spiri/SpiriGroundControl" and update the repo: "git submodule update --init --recursive".
|
|
||||||
* Open the "qgroundcontrol.pro" in "Spiri/SpiriGroundControl" folder by using the QT creator
|
|
||||||
* click "build" and "run"
|
|
||||||
|
|
||||||
|
|
||||||
# Setup Installation (MacOS)
|
|
||||||
|
|
||||||
* Install the Xcode in Apple Store
|
|
||||||
* Install Qt Creator for macOS: [Website](https://info.qt.io/zh-cn/download-qt-for-application-development)
|
|
||||||
* Create or open a Qt project and check the "iphonesimulator-clang-..." environment in the project configuration page
|
|
||||||
* create a folder in your workspace and name it such as "Spiri"
|
|
||||||
* git clone https://git.spirirobotics.com/hetongapp/SpiriGroundControl.git
|
|
||||||
* Then cd to the "Spiri/SpiriGroundControl" and update the repo: "git submodule update --init --recursive".
|
|
||||||
* Click the hammer compile button in the lower left corner, after the compilation is successful, you can close Qt Creator.
|
|
||||||
* After the compilation is complete, there will be an "Info.plist" file in the output folder, open it with Xcode.
|
|
||||||
|
|
||||||
|
|
||||||
# Setup Installation (Ubuntu20.04)
|
|
||||||
|
|
||||||
*Install QT 5.15.2
|
|
||||||
* Setup the environment for QT!
|
|
||||||
```bash
|
|
||||||
sudo chmod u+x ./Ubuntu_QT_install.sh && source ./Ubuntu_QT_install.sh
|
|
||||||
```
|
|
||||||
*Install Spiri QGC
|
|
||||||
* create a folder in your workspace and name it such as "Spiri"
|
|
||||||
* git clone https://git.spirirobotics.com/Spiri/SpiriGroundControlTest.git
|
|
||||||
* Then cd to the "Spiri/SpiriGroundControlTest" and update the repo: "git submodule update --init --recursive".
|
|
||||||
* Open the "qgroundcontrol.pro" in "Spiri/SpiriGroundControlTest" folder by using the QT creator
|
|
||||||
* click "build" and "run"
|
|
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 172 KiB |
|
@ -1 +0,0 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="94" height="20" role="img" aria-label="release: v4.2.9"><title>release: v4.2.9</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="94" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="49" height="20" fill="#555"/><rect x="49" width="45" height="20" fill="#007ec6"/><rect width="94" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="255" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="390">release</text><text x="255" y="140" transform="scale(.1)" fill="#fff" textLength="390">release</text><text aria-hidden="true" x="705" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="350">v4.2.9</text><text x="705" y="140" transform="scale(.1)" fill="#fff" textLength="350">v1.0.0</text></g></svg>
|
|
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 123 KiB |
Before Width: | Height: | Size: 173 KiB |
Before Width: | Height: | Size: 175 KiB |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 7.6 KiB |
|
@ -15,7 +15,7 @@ exists($$PWD/custom/android) {
|
||||||
android_source_dir_target.commands = $$QMAKE_MKDIR $$ANDROID_PACKAGE_SOURCE_DIR && \
|
android_source_dir_target.commands = $$QMAKE_MKDIR $$ANDROID_PACKAGE_SOURCE_DIR && \
|
||||||
$$QMAKE_COPY_DIR $$PWD/android/* $$OUT_PWD/ANDROID_PACKAGE_SOURCE_DIR && \
|
$$QMAKE_COPY_DIR $$PWD/android/* $$OUT_PWD/ANDROID_PACKAGE_SOURCE_DIR && \
|
||||||
$$QMAKE_COPY_DIR $$PWD/custom/android/* $$OUT_PWD/ANDROID_PACKAGE_SOURCE_DIR && \
|
$$QMAKE_COPY_DIR $$PWD/custom/android/* $$OUT_PWD/ANDROID_PACKAGE_SOURCE_DIR && \
|
||||||
$$QMAKE_STREAM_EDITOR -i \"s/package=\\\"org.mavlink.spiri\\\"/package=\\\"$$QGC_ANDROID_PACKAGE\\\"/\" $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml
|
$$QMAKE_STREAM_EDITOR -i \"s/package=\\\"org.mavlink.qgroundcontrol\\\"/package=\\\"$$QGC_ANDROID_PACKAGE\\\"/\" $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml
|
||||||
android_source_dir_target.depends = FORCE
|
android_source_dir_target.depends = FORCE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<manifest package="org.mavlink.spiri" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="-- %%INSERT_VERSION_NAME%% --" android:versionCode="-- %%INSERT_VERSION_CODE%% --" android:installLocation="auto">
|
<manifest package="org.mavlink.qgroundcontrol" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="-- %%INSERT_VERSION_NAME%% --" android:versionCode="-- %%INSERT_VERSION_CODE%% --" android:installLocation="auto">
|
||||||
<!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
|
<!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
|
||||||
Remove the comment if you do not require these default permissions. -->
|
Remove the comment if you do not require these default permissions. -->
|
||||||
<!-- %%INSERT_PERMISSIONS -->
|
<!-- %%INSERT_PERMISSIONS -->
|
||||||
|
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 521 B After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 990 B After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 170 KiB After Width: | Height: | Size: 170 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
|
@ -35,19 +35,19 @@ CONFIG += QGC_DISABLE_PX4_PLUGIN_FACTORY
|
||||||
DEFINES += CUSTOMHEADER=\"\\\"CustomPlugin.h\\\"\"
|
DEFINES += CUSTOMHEADER=\"\\\"CustomPlugin.h\\\"\"
|
||||||
DEFINES += CUSTOMCLASS=CustomPlugin
|
DEFINES += CUSTOMCLASS=CustomPlugin
|
||||||
|
|
||||||
TARGET = Spiri
|
TARGET = CustomQGroundControl
|
||||||
DEFINES += QGC_APPLICATION_NAME='"\\\"Spiri\\\""'
|
DEFINES += QGC_APPLICATION_NAME='"\\\"Custom QGroundControl\\\""'
|
||||||
|
|
||||||
DEFINES += QGC_ORG_NAME=\"\\\"spiri.org\\\"\"
|
DEFINES += QGC_ORG_NAME=\"\\\"qgroundcontrol.org\\\"\"
|
||||||
DEFINES += QGC_ORG_DOMAIN=\"\\\"org.spiri\\\"\"
|
DEFINES += QGC_ORG_DOMAIN=\"\\\"org.qgroundcontrol\\\"\"
|
||||||
|
|
||||||
QGC_APP_NAME = "Spiri"
|
QGC_APP_NAME = "Custom QGroundControl"
|
||||||
QGC_BINARY_NAME = "Spiri"
|
QGC_BINARY_NAME = "CustomQGroundControl"
|
||||||
QGC_ORG_NAME = "Spiri"
|
QGC_ORG_NAME = "Custom"
|
||||||
QGC_ORG_DOMAIN = "org.spiri"
|
QGC_ORG_DOMAIN = "org.custom"
|
||||||
QGC_ANDROID_PACKAGE = "org.spiri.spiri"
|
QGC_ANDROID_PACKAGE = "org.custom.qgroundcontrol"
|
||||||
QGC_APP_DESCRIPTION = "Spiri"
|
QGC_APP_DESCRIPTION = "Custom QGroundControl"
|
||||||
QGC_APP_COPYRIGHT = "Copyright (C) 2023 Spiri Development Team. All rights reserved."
|
QGC_APP_COPYRIGHT = "Copyright (C) 2020 QGroundControl Development Team. All rights reserved."
|
||||||
|
|
||||||
# Our own, custom resources
|
# Our own, custom resources
|
||||||
RESOURCES += \
|
RESOURCES += \
|
0
custom/deploy/qgroundcontrol-start.sh → custom-example/deploy/qgroundcontrol-start.sh
Normal file → Executable file
|
@ -26,14 +26,11 @@
|
||||||
<file alias="JoystickBezel.png">../resources/JoystickBezel.png</file>
|
<file alias="JoystickBezel.png">../resources/JoystickBezel.png</file>
|
||||||
<file alias="JoystickBezelLight.png">../resources/JoystickBezelLight.png</file>
|
<file alias="JoystickBezelLight.png">../resources/JoystickBezelLight.png</file>
|
||||||
<file alias="land.svg">../resources/land.svg</file>
|
<file alias="land.svg">../resources/land.svg</file>
|
||||||
<file alias="layout-bottom.svg">../resources/layout-bottom.svg</file>
|
|
||||||
<file alias="layout-right.svg">../resources/layout-right.svg</file>
|
|
||||||
<file alias="LockClosed.svg">../resources/LockClosed.svg</file>
|
<file alias="LockClosed.svg">../resources/LockClosed.svg</file>
|
||||||
<file alias="LockOpen.svg">../resources/LockOpen.svg</file>
|
<file alias="LockOpen.svg">../resources/LockOpen.svg</file>
|
||||||
<file alias="notile.png">../resources/notile.png</file>
|
<file alias="notile.png">../resources/notile.png</file>
|
||||||
<file alias="Pause.svg">../resources/Pause.svg</file>
|
<file alias="Pause.svg">../resources/Pause.svg</file>
|
||||||
<file alias="pause-mission.svg">../resources/pause-mission.svg</file>
|
<file alias="pause-mission.svg">../resources/pause-mission.svg</file>
|
||||||
<file alias="pencil.svg">../resources/pencil.svg</file>
|
|
||||||
<file alias="Play">../resources/Play.svg</file>
|
<file alias="Play">../resources/Play.svg</file>
|
||||||
<file alias="PowerButton">../resources/PowerButton.svg</file>
|
<file alias="PowerButton">../resources/PowerButton.svg</file>
|
||||||
<file alias="QGCLogoBlack">../resources/QGCLogoBlack.svg</file>
|
<file alias="QGCLogoBlack">../resources/QGCLogoBlack.svg</file>
|
|
@ -66,9 +66,6 @@
|
||||||
<file alias="MockLink.qml">../src/ui/preferences/MockLink.qml</file>
|
<file alias="MockLink.qml">../src/ui/preferences/MockLink.qml</file>
|
||||||
<file alias="MockLinkSettings.qml">../src/ui/preferences/MockLinkSettings.qml</file>
|
<file alias="MockLinkSettings.qml">../src/ui/preferences/MockLinkSettings.qml</file>
|
||||||
<file alias="MotorComponent.qml">../src/AutoPilotPlugins/Common/MotorComponent.qml</file>
|
<file alias="MotorComponent.qml">../src/AutoPilotPlugins/Common/MotorComponent.qml</file>
|
||||||
<file alias="ActuatorComponent.qml">../src/AutoPilotPlugins/PX4/ActuatorComponent.qml</file>
|
|
||||||
<file alias="ActuatorFact.qml">../src/AutoPilotPlugins/PX4/ActuatorFact.qml</file>
|
|
||||||
<file alias="ActuatorSlider.qml">../src/AutoPilotPlugins/PX4/ActuatorSlider.qml</file>
|
|
||||||
<file alias="OfflineMap.qml">../src/QtLocationPlugin/QMLControl/OfflineMap.qml</file>
|
<file alias="OfflineMap.qml">../src/QtLocationPlugin/QMLControl/OfflineMap.qml</file>
|
||||||
<file alias="PlanToolBar.qml">../src/PlanView/PlanToolBar.qml</file>
|
<file alias="PlanToolBar.qml">../src/PlanView/PlanToolBar.qml</file>
|
||||||
<file alias="PlanToolBarIndicators.qml">../src/PlanView/PlanToolBarIndicators.qml</file>
|
<file alias="PlanToolBarIndicators.qml">../src/PlanView/PlanToolBarIndicators.qml</file>
|
||||||
|
@ -79,7 +76,6 @@
|
||||||
<file alias="QGCInstrumentWidgetAlternate.qml">../src/FlightMap/Widgets/QGCInstrumentWidgetAlternate.qml</file>
|
<file alias="QGCInstrumentWidgetAlternate.qml">../src/FlightMap/Widgets/QGCInstrumentWidgetAlternate.qml</file>
|
||||||
<file alias="QGroundControl/Controls/AnalyzePage.qml">../src/AnalyzeView/AnalyzePage.qml</file>
|
<file alias="QGroundControl/Controls/AnalyzePage.qml">../src/AnalyzeView/AnalyzePage.qml</file>
|
||||||
<file alias="QGroundControl/Controls/AppMessages.qml">../src/QmlControls/AppMessages.qml</file>
|
<file alias="QGroundControl/Controls/AppMessages.qml">../src/QmlControls/AppMessages.qml</file>
|
||||||
<file alias="QGroundControl/Controls/AltModeDialog.qml">../src/QmlControls/AltModeDialog.qml</file>
|
|
||||||
<file alias="QGroundControl/Controls/AxisMonitor.qml">../src/QmlControls/AxisMonitor.qml</file>
|
<file alias="QGroundControl/Controls/AxisMonitor.qml">../src/QmlControls/AxisMonitor.qml</file>
|
||||||
<file alias="QGroundControl/Controls/CameraCalcCamera.qml">../src/PlanView/CameraCalcCamera.qml</file>
|
<file alias="QGroundControl/Controls/CameraCalcCamera.qml">../src/PlanView/CameraCalcCamera.qml</file>
|
||||||
<file alias="QGroundControl/Controls/CameraCalcGrid.qml">../src/PlanView/CameraCalcGrid.qml</file>
|
<file alias="QGroundControl/Controls/CameraCalcGrid.qml">../src/PlanView/CameraCalcGrid.qml</file>
|
||||||
|
@ -184,7 +180,6 @@
|
||||||
<file alias="QGroundControl/Controls/TakeoffItemMapVisual.qml">../src/PlanView/TakeoffItemMapVisual.qml</file>
|
<file alias="QGroundControl/Controls/TakeoffItemMapVisual.qml">../src/PlanView/TakeoffItemMapVisual.qml</file>
|
||||||
<file alias="QGroundControl/Controls/ToolStrip.qml">../src/QmlControls/ToolStrip.qml</file>
|
<file alias="QGroundControl/Controls/ToolStrip.qml">../src/QmlControls/ToolStrip.qml</file>
|
||||||
<file alias="QGroundControl/Controls/ToolStripHoverButton.qml">../src/QmlControls/ToolStripHoverButton.qml</file>
|
<file alias="QGroundControl/Controls/ToolStripHoverButton.qml">../src/QmlControls/ToolStripHoverButton.qml</file>
|
||||||
<file alias="QGroundControl/Controls/TransectStyleComplexItemEditor.qml">../src/PlanView/TransectStyleComplexItemEditor.qml</file>
|
|
||||||
<file alias="QGroundControl/Controls/TransectStyleComplexItemStats.qml">../src/PlanView/TransectStyleComplexItemStats.qml</file>
|
<file alias="QGroundControl/Controls/TransectStyleComplexItemStats.qml">../src/PlanView/TransectStyleComplexItemStats.qml</file>
|
||||||
<file alias="QGroundControl/Controls/TransectStyleComplexItemTabBar.qml">../src/PlanView/TransectStyleComplexItemTabBar.qml</file>
|
<file alias="QGroundControl/Controls/TransectStyleComplexItemTabBar.qml">../src/PlanView/TransectStyleComplexItemTabBar.qml</file>
|
||||||
<file alias="QGroundControl/Controls/TransectStyleComplexItemTerrainFollow.qml">../src/PlanView/TransectStyleComplexItemTerrainFollow.qml</file>
|
<file alias="QGroundControl/Controls/TransectStyleComplexItemTerrainFollow.qml">../src/PlanView/TransectStyleComplexItemTerrainFollow.qml</file>
|
||||||
|
@ -236,9 +231,6 @@
|
||||||
<file alias="QGroundControl/FlightDisplay/TerrainProgress.qml">../src/FlightDisplay/TerrainProgress.qml</file>
|
<file alias="QGroundControl/FlightDisplay/TerrainProgress.qml">../src/FlightDisplay/TerrainProgress.qml</file>
|
||||||
<file alias="QGroundControl/FlightDisplay/TelemetryValuesBar.qml">../src/FlightDisplay/TelemetryValuesBar.qml</file>
|
<file alias="QGroundControl/FlightDisplay/TelemetryValuesBar.qml">../src/FlightDisplay/TelemetryValuesBar.qml</file>
|
||||||
<file alias="QGroundControl/FlightDisplay/VehicleWarnings.qml">../src/FlightDisplay/VehicleWarnings.qml</file>
|
<file alias="QGroundControl/FlightDisplay/VehicleWarnings.qml">../src/FlightDisplay/VehicleWarnings.qml</file>
|
||||||
<file alias="QGroundControl/FlightDisplay/ObstacleDistanceOverlay.qml">../src/FlightDisplay/ObstacleDistanceOverlay.qml</file>
|
|
||||||
<file alias="QGroundControl/FlightDisplay/ObstacleDistanceOverlayMap.qml">../src/FlightDisplay/ObstacleDistanceOverlayMap.qml</file>
|
|
||||||
<file alias="QGroundControl/FlightDisplay/ObstacleDistanceOverlayVideo.qml">../src/FlightDisplay/ObstacleDistanceOverlayVideo.qml</file>
|
|
||||||
<file alias="QGroundControl/FlightDisplay/qmldir">../src/QmlControls/QGroundControl/FlightDisplay/qmldir</file>
|
<file alias="QGroundControl/FlightDisplay/qmldir">../src/QmlControls/QGroundControl/FlightDisplay/qmldir</file>
|
||||||
<file alias="QGroundControl/FlightMap/CameraTriggerIndicator.qml">../src/FlightMap/MapItems/CameraTriggerIndicator.qml</file>
|
<file alias="QGroundControl/FlightMap/CameraTriggerIndicator.qml">../src/FlightMap/MapItems/CameraTriggerIndicator.qml</file>
|
||||||
<file alias="QGroundControl/FlightMap/CenterMapDropButton.qml">../src/FlightMap/Widgets/CenterMapDropButton.qml</file>
|
<file alias="QGroundControl/FlightMap/CenterMapDropButton.qml">../src/FlightMap/Widgets/CenterMapDropButton.qml</file>
|
||||||
|
@ -331,15 +323,13 @@
|
||||||
<file alias="Vehicle/GPSFact.json">../src/Vehicle/GPSFact.json</file>
|
<file alias="Vehicle/GPSFact.json">../src/Vehicle/GPSFact.json</file>
|
||||||
<file alias="Vehicle/GPSRTKFact.json">../src/Vehicle/GPSRTKFact.json</file>
|
<file alias="Vehicle/GPSRTKFact.json">../src/Vehicle/GPSRTKFact.json</file>
|
||||||
<file alias="Vehicle/SetpointFact.json">../src/Vehicle/SetpointFact.json</file>
|
<file alias="Vehicle/SetpointFact.json">../src/Vehicle/SetpointFact.json</file>
|
||||||
<file alias="Vehicle/LocalPositionFact.json">../src/Vehicle/LocalPositionFact.json</file>
|
|
||||||
<file alias="Vehicle/LocalPositionSetpointFact.json">../src/Vehicle/LocalPositionFact.json</file>
|
|
||||||
<file alias="Vehicle/SubmarineFact.json">../src/Vehicle/SubmarineFact.json</file>
|
<file alias="Vehicle/SubmarineFact.json">../src/Vehicle/SubmarineFact.json</file>
|
||||||
<file alias="Vehicle/TemperatureFact.json">../src/Vehicle/TemperatureFact.json</file>
|
<file alias="Vehicle/TemperatureFact.json">../src/Vehicle/TemperatureFact.json</file>
|
||||||
<file alias="Vehicle/TerrainFactGroup.json">../src/Vehicle/TerrainFactGroup.json</file>
|
<file alias="Vehicle/TerrainFactGroup.json">../src/Vehicle/TerrainFactGroup.json</file>
|
||||||
<file alias="Vehicle/VehicleFact.json">../src/Vehicle/VehicleFact.json</file>
|
<file alias="Vehicle/VehicleFact.json">../src/Vehicle/VehicleFact.json</file>
|
||||||
<file alias="Vehicle/VibrationFact.json">../src/Vehicle/VibrationFact.json</file>
|
<file alias="Vehicle/VibrationFact.json">../src/Vehicle/VibrationFact.json</file>
|
||||||
<file alias="Vehicle/WindFact.json">../src/Vehicle/WindFact.json</file>
|
<file alias="Vehicle/WindFact.json">../src/Vehicle/WindFact.json</file>
|
||||||
<file alias="Vehicle/HygrometerFact.json">../src/Vehicle/HygrometerFact.json</file>
|
<file alias="Vehicle/HygrometerFact.json">../src/Vehicle/HygrometerFact.json</file>
|
||||||
<file alias="Video.SettingsGroup.json">../src/Settings/Video.SettingsGroup.json</file>
|
<file alias="Video.SettingsGroup.json">../src/Settings/Video.SettingsGroup.json</file>
|
||||||
<file alias="VTOLLandingPattern.FactMetaData.json">../src/MissionManager/VTOLLandingPattern.FactMetaData.json</file>
|
<file alias="VTOLLandingPattern.FactMetaData.json">../src/MissionManager/VTOLLandingPattern.FactMetaData.json</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
|
@ -347,8 +337,8 @@
|
||||||
<file alias="APMArduSubMockLink.params">../src/comm/APMArduSubMockLink.params</file>
|
<file alias="APMArduSubMockLink.params">../src/comm/APMArduSubMockLink.params</file>
|
||||||
<file alias="PX4MockLink.params">../src/comm/PX4MockLink.params</file>
|
<file alias="PX4MockLink.params">../src/comm/PX4MockLink.params</file>
|
||||||
<file alias="General.MetaData.json">../src/comm/MockLink.General.MetaData.json</file>
|
<file alias="General.MetaData.json">../src/comm/MockLink.General.MetaData.json</file>
|
||||||
<file alias="General.MetaData.json.xz">../src/comm/MockLink.General.MetaData.json.xz</file>
|
<file alias="General.MetaData.json.xz">src/comm/MockLink.General.MetaData.json.xz</file>
|
||||||
<file alias="Parameter.MetaData.json.xz">../src/comm/MockLink.Parameter.MetaData.json.xz</file>
|
|
||||||
<file alias="Parameter.MetaData.json">../src/comm/MockLink.Parameter.MetaData.json</file>
|
<file alias="Parameter.MetaData.json">../src/comm/MockLink.Parameter.MetaData.json</file>
|
||||||
|
<file alias="Parameter.MetaData.json.xz">src/comm/MockLink.Parameter.MetaData.json.xz</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 136 KiB |
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon -->
|
<!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon -->
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
|
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">
|
||||||
<metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata>
|
<metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata>
|
||||||
<g><g transform="translate(0.000000,511.000000) scale(0.100000,-0.100000)"><path d="M1411.9,2317.3c-26.8-28.7-32.6-92-36.4-365.9l-5.7-333.3l-84.3-24.9c-203.1-59.4-264.4-205-210.7-496.1c90-488.5,454-672.4,687.7-350.5c82.4,113,153.2,350.5,153.2,515.3V1394h773.9h772l47.9-109.2l47.9-109.2l-113-82.4c-295-216.5-521-542.1-630.2-906.1c-42.1-137.9-44.1-174.3-51.7-1021c-5.8-927.1-5.8-932.9,80.4-932.9c78.5,0,88.1,32.6,88.1,291.2v245.2h95.8h95.8v220.3v220.3h-97.7h-99.6l11.5,379.3c11.5,419.5,32.6,536.4,137.9,764.3C3183.8,591.3,3360,809.7,3565,961l70.9,51.7l34.5-72.8c21.1-40.2,57.5-82.4,84.3-95.8c69-34.5,2421.3-34.5,2490.2,0c26.8,13.4,63.2,55.6,84.3,95.8l34.5,72.8l70.9-51.7c203-151.3,381.2-369.7,488.5-605.3c109.2-237.5,128.3-348.6,139.8-766.2l11.5-379.3h-99.6H6877v-220.3v-220.3h95.8h95.8v-245.2c0-258.6,9.6-291.2,88.1-291.2c86.2,0,86.2,5.7,80.5,932.9c-7.6,846.7-9.6,883.1-51.7,1021c-111.1,367.8-335.2,687.7-636,909.9l-109.2,80.4l47.9,109.2l49.8,107.3H7308h772l7.7-166.7c23-415.7,243.3-699.2,494.2-632.1c84.3,23,149.4,72.8,214.5,168.6c116.8,174.3,185.8,542.1,124.5,662.8c-44.1,86.2-139.8,157.1-226,170.5l-74.7,13.4v339.1c0,304.6-3.8,342.9-34.5,369.7c-42.1,38.3-99.6,42.1-147.5,7.7c-30.6-24.9-34.5-57.5-32.6-364l1.9-339.1l-1093.8,3.8l-1095.7,5.7l-17.2,67c-30.7,116.9-21.1,114.9-461.7,114.9h-404.2l-46,67.1c-55.6,82.4-180.1,143.7-289.2,143.7c-109.2,0-241.4-65.1-293.1-145.6l-42.1-65.1h-404.2c-440.6,0-431,1.9-461.7-114.9l-17.2-67l-1095.7-5.7l-1095.7-3.8v344.8c0,319.9-1.9,344.8-36.4,364C1498.1,2361.3,1446.3,2355.6,1411.9,2317.3z"/><path d="M297,2102.7c-182-38.3-233.7-86.2-172.4-153.2c101.5-111.1,457.8-168.6,837.1-136c139.8,13.4,262.4,30.7,270.1,38.3c9.6,9.6,13.4,53.6,9.6,99.6c-5.7,80.4-7.7,84.3-72.8,90c-36.4,3.8-136,19.2-220.3,34.5C758.7,2110.4,400.4,2125.7,297,2102.7z"/><path d="M1925.2,2102.7c-82.4-9.6-162.8-23-176.2-26.8c-26.8-11.5-36.4-183.9-9.6-183.9c7.7,0,116.9-17.2,243.3-36.4c329.5-53.6,500-65.1,645.6-42.1c319.9,46,325.6,166.7,15.3,260.5C2517.1,2112.3,2143.6,2127.6,1925.2,2102.7z"/><path d="M7432.5,2093.1c-180.1-40.2-296.9-105.4-296.9-162.8c0-59.4,65.1-91.9,235.6-116.9c145.6-23,316.1-11.5,645.5,42.1c126.4,19.2,237.5,36.4,245.2,36.4c7.7,0,13.4,40.2,9.6,90c-5.7,90-7.6,91.9-82.4,105.4C8012.9,2118,7558.9,2121.9,7432.5,2093.1z"/><path d="M9281,2110.4c-30.6-3.8-134.1-21.1-229.9-36.4c-93.9-15.3-197.3-30.6-229.9-32.6c-55.6-5.7-57.5-9.6-63.2-105.4c-3.8-74.7,1.9-101.5,19.2-101.5c13.4,0,134.1-9.6,268.2-21.1c275.8-24.9,521-3.8,693.4,59.4c283.5,107.3,180.1,226-208.8,239.4C9424.7,2116.1,9313.6,2114.2,9281,2110.4z"/><path d="M4584,263.8c-34.5-19.2-74.7-61.3-90-91.9l-28.7-55.6l-386.9-1.9c-214.5-1.9-417.6-13.4-450.2-23c-82.4-26.8-191.6-151.3-216.5-243.3c-28.7-103.4-28.7-1626.3,0-1712.5c34.5-101.5,111.1-189.6,197.3-229.9c74.7-34.5,149.4-36.4,1390.7-36.4c1241.3,0,1316,1.9,1390.7,36.4c93.9,42.1,168.6,134.1,197.3,241.4c28.7,101.5,28.7,1599.5,0,1701c-24.9,90-120.7,203.1-205,237.5c-46,19.2-160.9,26.8-421.4,26.8c-197.3,0-377.4,3.8-398.4,9.6c-23,5.8-49.8,30.7-63.2,57.5c-11.5,24.9-47.9,63.2-82.4,84.3c-57.5,34.5-97.7,38.3-417.6,38.3C4681.7,302.1,4639.6,298.3,4584,263.8z M6246.7-232.4c65.1-67,70.9-130.3,15.3-201.1c-80.5-101.5-266.3-40.2-266.3,88.1C5995.8-190.2,6139.5-127,6246.7-232.4z M5329.2-280.2c327.5-157.1,519.1-515.3,457.8-852.4c-72.8-396.5-394.6-672.4-787.3-672.4c-390.8,0-724.1,283.5-791.1,676.2c-61.3,365.9,164.7,743.3,528.7,877.3C4890.5-194,5181.7-207.5,5329.2-280.2z"/><path d="M4831.2-538.8c-126.4-44.1-237.5-147.5-293.1-277.8c-76.6-180.1-24.9-425.3,120.7-561.3c170.5-159,461.6-164.7,660.9-13.4c160.9,122.6,224.1,383.1,139.8,578.5c-55.5,128.3-183.9,243.3-312.2,281.6C5022.7-494.8,4955.7-494.8,4831.2-538.8z"/></g></g>
|
<g><g transform="translate(0.000000,511.000000) scale(0.100000,-0.100000)"><path d="M1411.9,2317.3c-26.8-28.7-32.6-92-36.4-365.9l-5.7-333.3l-84.3-24.9c-203.1-59.4-264.4-205-210.7-496.1c90-488.5,454-672.4,687.7-350.5c82.4,113,153.2,350.5,153.2,515.3V1394h773.9h772l47.9-109.2l47.9-109.2l-113-82.4c-295-216.5-521-542.1-630.2-906.1c-42.1-137.9-44.1-174.3-51.7-1021c-5.8-927.1-5.8-932.9,80.4-932.9c78.5,0,88.1,32.6,88.1,291.2v245.2h95.8h95.8v220.3v220.3h-97.7h-99.6l11.5,379.3c11.5,419.5,32.6,536.4,137.9,764.3C3183.8,591.3,3360,809.7,3565,961l70.9,51.7l34.5-72.8c21.1-40.2,57.5-82.4,84.3-95.8c69-34.5,2421.3-34.5,2490.2,0c26.8,13.4,63.2,55.6,84.3,95.8l34.5,72.8l70.9-51.7c203-151.3,381.2-369.7,488.5-605.3c109.2-237.5,128.3-348.6,139.8-766.2l11.5-379.3h-99.6H6877v-220.3v-220.3h95.8h95.8v-245.2c0-258.6,9.6-291.2,88.1-291.2c86.2,0,86.2,5.7,80.5,932.9c-7.6,846.7-9.6,883.1-51.7,1021c-111.1,367.8-335.2,687.7-636,909.9l-109.2,80.4l47.9,109.2l49.8,107.3H7308h772l7.7-166.7c23-415.7,243.3-699.2,494.2-632.1c84.3,23,149.4,72.8,214.5,168.6c116.8,174.3,185.8,542.1,124.5,662.8c-44.1,86.2-139.8,157.1-226,170.5l-74.7,13.4v339.1c0,304.6-3.8,342.9-34.5,369.7c-42.1,38.3-99.6,42.1-147.5,7.7c-30.6-24.9-34.5-57.5-32.6-364l1.9-339.1l-1093.8,3.8l-1095.7,5.7l-17.2,67c-30.7,116.9-21.1,114.9-461.7,114.9h-404.2l-46,67.1c-55.6,82.4-180.1,143.7-289.2,143.7c-109.2,0-241.4-65.1-293.1-145.6l-42.1-65.1h-404.2c-440.6,0-431,1.9-461.7-114.9l-17.2-67l-1095.7-5.7l-1095.7-3.8v344.8c0,319.9-1.9,344.8-36.4,364C1498.1,2361.3,1446.3,2355.6,1411.9,2317.3z"/><path d="M297,2102.7c-182-38.3-233.7-86.2-172.4-153.2c101.5-111.1,457.8-168.6,837.1-136c139.8,13.4,262.4,30.7,270.1,38.3c9.6,9.6,13.4,53.6,9.6,99.6c-5.7,80.4-7.7,84.3-72.8,90c-36.4,3.8-136,19.2-220.3,34.5C758.7,2110.4,400.4,2125.7,297,2102.7z"/><path d="M1925.2,2102.7c-82.4-9.6-162.8-23-176.2-26.8c-26.8-11.5-36.4-183.9-9.6-183.9c7.7,0,116.9-17.2,243.3-36.4c329.5-53.6,500-65.1,645.6-42.1c319.9,46,325.6,166.7,15.3,260.5C2517.1,2112.3,2143.6,2127.6,1925.2,2102.7z"/><path d="M7432.5,2093.1c-180.1-40.2-296.9-105.4-296.9-162.8c0-59.4,65.1-91.9,235.6-116.9c145.6-23,316.1-11.5,645.5,42.1c126.4,19.2,237.5,36.4,245.2,36.4c7.7,0,13.4,40.2,9.6,90c-5.7,90-7.6,91.9-82.4,105.4C8012.9,2118,7558.9,2121.9,7432.5,2093.1z"/><path d="M9281,2110.4c-30.6-3.8-134.1-21.1-229.9-36.4c-93.9-15.3-197.3-30.6-229.9-32.6c-55.6-5.7-57.5-9.6-63.2-105.4c-3.8-74.7,1.9-101.5,19.2-101.5c13.4,0,134.1-9.6,268.2-21.1c275.8-24.9,521-3.8,693.4,59.4c283.5,107.3,180.1,226-208.8,239.4C9424.7,2116.1,9313.6,2114.2,9281,2110.4z"/><path d="M4584,263.8c-34.5-19.2-74.7-61.3-90-91.9l-28.7-55.6l-386.9-1.9c-214.5-1.9-417.6-13.4-450.2-23c-82.4-26.8-191.6-151.3-216.5-243.3c-28.7-103.4-28.7-1626.3,0-1712.5c34.5-101.5,111.1-189.6,197.3-229.9c74.7-34.5,149.4-36.4,1390.7-36.4c1241.3,0,1316,1.9,1390.7,36.4c93.9,42.1,168.6,134.1,197.3,241.4c28.7,101.5,28.7,1599.5,0,1701c-24.9,90-120.7,203.1-205,237.5c-46,19.2-160.9,26.8-421.4,26.8c-197.3,0-377.4,3.8-398.4,9.6c-23,5.8-49.8,30.7-63.2,57.5c-11.5,24.9-47.9,63.2-82.4,84.3c-57.5,34.5-97.7,38.3-417.6,38.3C4681.7,302.1,4639.6,298.3,4584,263.8z M6246.7-232.4c65.1-67,70.9-130.3,15.3-201.1c-80.5-101.5-266.3-40.2-266.3,88.1C5995.8-190.2,6139.5-127,6246.7-232.4z M5329.2-280.2c327.5-157.1,519.1-515.3,457.8-852.4c-72.8-396.5-394.6-672.4-787.3-672.4c-390.8,0-724.1,283.5-791.1,676.2c-61.3,365.9,164.7,743.3,528.7,877.3C4890.5-194,5181.7-207.5,5329.2-280.2z"/><path d="M4831.2-538.8c-126.4-44.1-237.5-147.5-293.1-277.8c-76.6-180.1-24.9-425.3,120.7-561.3c170.5-159,461.6-164.7,660.9-13.4c160.9,122.6,224.1,383.1,139.8,578.5c-55.5,128.3-183.9,243.3-312.2,281.6C5022.7-494.8,4955.7-494.8,4831.2-538.8z"/></g></g>
|
||||||
</svg>
|
</svg>
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 187 B After Width: | Height: | Size: 187 B |
Before Width: | Height: | Size: 775 B After Width: | Height: | Size: 775 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 510 B After Width: | Height: | Size: 510 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 660 B After Width: | Height: | Size: 660 B |
Before Width: | Height: | Size: 558 B After Width: | Height: | Size: 558 B |
Before Width: | Height: | Size: 915 B After Width: | Height: | Size: 915 B |
Before Width: | Height: | Size: 688 B After Width: | Height: | Size: 688 B |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 692 B After Width: | Height: | Size: 692 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
0
custom/updateinstrumentqrc.py → custom-example/updateinstrumentqrc.py
Normal file → Executable file
|
@ -1 +0,0 @@
|
||||||
Versions/Current/Headers
|
|
|
@ -1 +0,0 @@
|
||||||
Versions/Current/Resources
|
|
|
@ -1 +0,0 @@
|
||||||
Versions/Current/SDL2
|
|
|
@ -1 +0,0 @@
|
||||||
A
|
|