Skip to content
Commits on Source (3414)
version: '{branch}-{build}'
image: Visual Studio 2017
build:
verbosity: minimal
environment:
matrix:
# - BUILD: 'Debug'
# CONFIG: debug
# SHADOW_BUILD_DIR: C:\projects\qgroundcontrol\build_windows_debug
- BUILD: 'Release'
CONFIG: installer
SHADOW_BUILD_DIR: C:\projects\qgroundcontrol\build_windows_install
QT_JOM_DIR: C:\Qt-QGC-5.12.6\Tools\QtCreator\bin
QT_QMAKE_DIR: C:\Qt-QGC-5.12.6\5.12.6\msvc2017_64\bin
install:
- git submodule update --init --recursive
- call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
- set PATH=C:\Qt\Tools\QtCreator\bin;C:\Qt\5.11\msvc2015\bin;%PATH%
- call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
- mkdir %LOCALAPPDATA%\QtProject && copy test\qtlogging.ini %LOCALAPPDATA%\QtProject\
- ps: |
Write-Host "Installing Qt..." -ForegroundColor Cyan
$qt7zPath = "$($env:USERPROFILE)\Qt-QGC-5.12.6.7z"
Write-Host "Downloading..."
(New-Object Net.WebClient).DownloadFile('https://qgroundcontrol.s3-us-west-2.amazonaws.com/dependencies/Qt-QGC-5.12.6.7z', $qt7zPath)
Write-Host "Unzipping..."
cmd /c start /wait 7z x $qt7zPath -oC:\
Write-Host "Installed" -ForegroundColor Green
- ps: |
Write-Host "Installing GStreamer..." -ForegroundColor Cyan
$msiPath = "$($env:USERPROFILE)\gstreamer-1.0-x86-1.5.2.msi"
$msiPath = "$($env:USERPROFILE)\gstreamer-1.0-x86_64-1.14.4.msi"
Write-Host "Downloading..."
(New-Object Net.WebClient).DownloadFile('https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-x86-1.5.2.msi', $msiPath)
(New-Object Net.WebClient).DownloadFile('https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-x86_64-1.14.4.msi', $msiPath)
Write-Host "Installing..."
cmd /c start /wait msiexec /package $msiPath /passive ADDLOCAL=ALL
Write-Host "Installed" -ForegroundColor Green
- ps: |
Write-Host "Installing GStreamer dev..." -ForegroundColor Cyan
$msiPath = "$($env:USERPROFILE)\gstreamer-1.0-devel-x86-1.5.2.msi"
$msiPath = "$($env:USERPROFILE)\gstreamer-1.0-devel-x86_64-1.14.4.msi"
Write-Host "Downloading..."
(New-Object Net.WebClient).DownloadFile('https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-devel-x86-1.5.2.msi', $msiPath)
(New-Object Net.WebClient).DownloadFile('https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-devel-x86_64-1.14.4.msi', $msiPath)
Write-Host "Installing..."
cmd /c start /wait msiexec /package $msiPath /passive ADDLOCAL=ALL
Write-Host "Installed" -ForegroundColor Green
build_script:
- mkdir %SHADOW_BUILD_DIR% && cd %SHADOW_BUILD_DIR% && C:\Qt\5.11\msvc2015\bin\qmake -r CONFIG-=debug_and_release CONFIG+=%CONFIG% CONFIG+=WarningsAsErrorsOn %APPVEYOR_BUILD_FOLDER%\qgroundcontrol.pro
- cd %SHADOW_BUILD_DIR% && jom
- if "%CONFIG%" EQU "installer" ( copy %SHADOW_BUILD_DIR%\release\QGroundControl-installer.exe %APPVEYOR_BUILD_FOLDER%\QGroundControl-installer.exe )
- mkdir %SHADOW_BUILD_DIR% && cd %SHADOW_BUILD_DIR% && %QT_QMAKE_DIR%\qmake -r CONFIG+=%CONFIG% %APPVEYOR_BUILD_FOLDER%\qgroundcontrol.pro
- cd %SHADOW_BUILD_DIR% && %QT_JOM_DIR%\jom
- if "%CONFIG%" EQU "installer" ( copy %SHADOW_BUILD_DIR%\staging\QGroundControl-installer.exe %APPVEYOR_BUILD_FOLDER%\QGroundControl-installer.exe )
# Generate the source server information to embed in the PDB
- '"C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\srcsrv\srctool.exe" -r -u "%SHADOW_BUILD_DIR%\release\qgroundcontrol.pdb" | grep qgroundcontrol | grep -v moc_ | grep -v libs\\mavlink | grep -v build_windows_install | python %APPVEYOR_BUILD_FOLDER%\deploy\genPDBsrcsrv.py > %SHADOW_BUILD_DIR%\release\qgroundcontrol.pdb.srcsrv'
# Temporarily disabled while we try to figure out where this is located on appveyor image
# - '"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\srcsrv\srctool.exe" -r -u "%SHADOW_BUILD_DIR%\qgc-app\qgroundcontrol.pdb" | grep qgroundcontrol | grep -v moc_ | grep -v libs\\mavlink | grep -v build_windows_install | python %APPVEYOR_BUILD_FOLDER%\deploy\genPDBsrcsrv.py > %SHADOW_BUILD_DIR%\qgc-app\qgroundcontrol.pdb.srcsrv'
# write the source server info
- '"C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\srcsrv\pdbstr.exe" -w -i:%SHADOW_BUILD_DIR%\release\qgroundcontrol.pdb.srcsrv -p:%SHADOW_BUILD_DIR%\release\qgroundcontrol.pdb -s:srcsrv'
# - '"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\srcsrv\pdbstr.exe" -w -i:%SHADOW_BUILD_DIR%\qgc-app\qgroundcontrol.pdb.srcsrv -p:%SHADOW_BUILD_DIR%\qgc-app\qgroundcontrol.pdb -s:srcsrv'
# build the symbol / PE store
- 'cd %APPVEYOR_BUILD_FOLDER% && "C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symstore.exe" add /compress /s symbols /f %SHADOW_BUILD_DIR%\release\qgroundcontrol.pdb /t qgroundcontrol'
- 'cd %APPVEYOR_BUILD_FOLDER% && "C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symstore.exe" add /compress /s symbols /f %SHADOW_BUILD_DIR%\release\qgroundcontrol.exe /t qgroundcontrol'
- ps: 'cd $env:appveyor_build_folder; .\deploy\lowercaseify_symbolstore.ps1'
# - 'cd %APPVEYOR_BUILD_FOLDER% && "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\symstore.exe" add /compress /s symbols /f %SHADOW_BUILD_DIR%\qgc-app\qgroundcontrol.pdb /t qgroundcontrol'
# - 'cd %APPVEYOR_BUILD_FOLDER% && "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\symstore.exe" add /compress /s symbols /f %SHADOW_BUILD_DIR%\qgc-app\qgroundcontrol.exe /t qgroundcontrol'
# - ps: 'cd $env:appveyor_build_folder; .\deploy\lowercaseify_symbolstore.ps1'
test_script:
- if "%CONFIG%" EQU "debug" ( %SHADOW_BUILD_DIR%\debug\qgroundcontrol --unittest )
for:
-
branches:
only:
- master
artifacts:
- path: QGroundControl-installer.exe
name: qgcinstaller
-
branches:
only:
- Stable_V3.5
artifacts:
- path: QGroundControl-installer.exe
name: qgcinstaller
- path: symbols\**\*.*_
name: symbols
- path: build_windows_install\staging\qgroundcontrol.pdb
name: pdb
deploy:
# deploy continuous builds to s3
......@@ -101,19 +98,19 @@ deploy:
# appveyor_repo_tag: false
# deploy release symbols to s3
- provider: S3
access_key_id:
secure: IGAojLMqokL+76DbdulmWDA3MTsxEBBi3ReVVSqTy9c=
secret_access_key:
secure: RiYqaR+3T2PMNz2j5ur8LCA6H/Zfd4jTX33CZE5iBxm+zaz4QLs25p0B7prpaoNN
bucket: qgroundcontrol
region: us-west-2
set_public: true
folder: releasesyms
artifact: symbols
on:
CONFIG: installer
appveyor_repo_tag: true
# - provider: S3
# access_key_id:
# secure: IGAojLMqokL+76DbdulmWDA3MTsxEBBi3ReVVSqTy9c=
# secret_access_key:
# secure: RiYqaR+3T2PMNz2j5ur8LCA6H/Zfd4jTX33CZE5iBxm+zaz4QLs25p0B7prpaoNN
# bucket: qgroundcontrol
# region: us-west-2
# set_public: true
# folder: releasesyms
# artifact: symbols
# on:
# CONFIG: installer
# appveyor_repo_tag: true
# deploy tagged releases to Github releases
- provider: GitHub
......@@ -155,3 +152,18 @@ deploy:
on:
CONFIG: installer
appveyor_repo_tag: true
# deploy pdb for tagged releases to s3 latest folder
- provider: S3
access_key_id:
secure: IGAojLMqokL+76DbdulmWDA3MTsxEBBi3ReVVSqTy9c=
secret_access_key:
secure: RiYqaR+3T2PMNz2j5ur8LCA6H/Zfd4jTX33CZE5iBxm+zaz4QLs25p0B7prpaoNN
bucket: qgroundcontrol
region: us-west-2
set_public: true
folder: latest
artifact: pdb
on:
CONFIG: installer
appveyor_repo_tag: true
---
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.)
......@@ -5,7 +5,6 @@ libs/lib/Frameworks/GStreamer.framework
CMakeFiles
tags
build*/
Info.plist
obj
.DS_Store
*.log
......@@ -28,7 +27,6 @@ doc/html
doc/doxy.log
deploy/mac
deploy/linux
deploy/qgroundcontrol*
controller_log*
user_config.pri
*.app
......@@ -57,6 +55,7 @@ libs/thirdParty/libxbee/lib/
GeneratedFiles/
gstreamer-1.0-android*
src/Airmap/Airmap_api_key.h
localization/qgroundcontrol/
*.autosave
.settings/
......@@ -68,8 +67,6 @@ ios/iOSForAppStore-Info.plist
moc_*
ui_*
*.o
*.a
*.so*
*.moc
*.prl
......
......@@ -4,9 +4,6 @@
[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/WGS84toCartesian"]
path = libs/WGS84toCartesian
url = https://github.com/chrberger/WGS84toCartesian.git
[submodule "libs/polylabel"]
path = libs/polylabel
url = https://github.com/mapbox/polylabel.git
......@@ -25,3 +22,9 @@
[submodule "libs/or-tools"]
path = libs/or-tools
url = https://github.com/google/or-tools.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
......@@ -5,36 +5,62 @@ language: cpp
env:
global:
- JOBS=4
# QT_FATAL_WARNINGS is turned off because Qt 5.11.3 throws a speech dispatcher not working warning when running unit tests
#- QT_FATAL_WARNINGS=1
- SHADOW_BUILD_DIR=/tmp/shadow_build_dir
# ANDROID_STOREPASS
- CODESIGN=nocodesign
- secure: RGovyUnMw3fp/bHZi058JvANT1rYmNqrsuSYew0cIgirO6YbMHr/rsjwCm1FTYpBl8s1zgr+u2b8ftYnfnCz2YT+Aip4NWrVYpVU0FEmfytGILrnUS0pjlt8m7fU9AKR1ElOSll7yw7e1kftynN39Q321etvwbLZcXon6zz0suE=
matrix:
jobs:
fast_finish: true
include:
- os: linux
dist: xenial
- stage: "Build"
name: "Linux Installer"
os: linux
dist: bionic
env: SPEC=linux-g++-64 CONFIG=installer
sudo: required
- os: linux
dist: xenial
- stage: "Build"
name: "Linux Debug"
os: linux
dist: bionic
env: SPEC=linux-g++-64 CONFIG=debug
services: xvfb
sudo: required
- os: android
- stage: "Build"
name: "Android 32 bit"
dist: xenial
language: android
env: SPEC=android-g++ CONFIG=installer
env: SPEC=android-clang CONFIG=installer BITNESS=32 GSTREAMER_NAME=armv7
sudo: false
- os: osx
osx_image: xcode9.2
- 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"
os: osx
osx_image: xcode11.3
env: SPEC=macx-clang CONFIG=installer
sudo: required
- os: osx
osx_image: xcode9.2
env: SPEC=macx-ios-clang CONFIG=release
- 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
......@@ -43,7 +69,7 @@ matrix:
android:
components:
- android-25
- android-28
- build-tools-25.0.3
- platform-tools
......@@ -54,7 +80,6 @@ addons:
- libgstreamer-plugins-base1.0-dev
- libgstreamer1.0-0:amd64
- libgstreamer1.0-dev
- libsdl2-dev
- libudev-dev
- wget
......@@ -71,33 +96,50 @@ before_install:
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.11.3-gcc_64-min.tar.bz2 &&
tar jxf Qt5.11.3-gcc_64-min.tar.bz2 -C /tmp &&
export PATH=/tmp/Qt5.11-gcc_64/5.11.3/gcc_64/bin:$PATH
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-g++" ]; then
wget --quiet https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-android-universal-1.14.4.tar.bz2 &&
tar jxf gstreamer-1.0-android-universal-1.14.4.tar.bz2 -C ${TRAVIS_BUILD_DIR} &&
wget --quiet https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.11.0-android_armv7-min.tar.bz2 &&
tar jxf Qt5.11.0-android_armv7-min.tar.bz2 -C /tmp &&
wget --quiet https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip &&
unzip android-ndk-r16b-linux-x86_64.zip > /dev/null &&
export ANDROID_NDK_ROOT=`pwd`/android-ndk-r16b &&
- if [ "${SPEC}" = "android-clang" ]; then
wget --quiet https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-android-${GSTREAMER_NAME}-1.14.4.tar.bz2 &&
tar jxf gstreamer-1.0-android-${GSTREAMER_NAME}-1.14.4.tar.bz2 -C ${TRAVIS_BUILD_DIR} &&
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=/tmp/Qt5.11-android_armv7/5.11.0/android_armv7/bin:`pwd`/android-ndk-r16b:$PATH && echo $PATH
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.11.0-clang_64-min.tar.bz2 &&
tar jxf Qt5.11.0-clang_64-min.tar.bz2 -C /tmp
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
......@@ -108,7 +150,7 @@ install:
fi
- if [ "${SPEC}" = "macx-clang" ]; then
export QT_DIR=Qt5.11-clang_64/5.11.0/clang_64 &&
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
......@@ -132,26 +174,39 @@ before_script:
- cd ${TRAVIS_BUILD_DIR}
# switch android config from installer to release if the android storepass isn't available
- if [[ "${SPEC}" = "android-g++" && "${CONFIG}" = "installer" && -z ${ANDROID_STOREPASS} ]]; then
- if [[ "${SPEC}" = "android-clang" && "${CONFIG}" = "installer" && -z ${ANDROID_STOREPASS} ]]; then
export CONFIG=release;
fi
# insert QGC version in AndroidManifest.xml
- if [ "${SPEC}" = "android-g++" ]; then
- if [ "${SPEC}" = "android-clang" ]; then
git remote set-branches origin 'master' &&
git fetch --tags origin master &&
./tools/update_android_version.sh;
./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}
# Due to possible bug in Qt 5.11 WarningsAsErrorsOn is off for Linux builds. Hopefully back on once that is resolved.
- if [ "${SPEC}" = "macx-clang" ]; then
qmake -r ${TRAVIS_BUILD_DIR}/qgroundcontrol.pro CONFIG+=${CONFIG} CONFIG+=WarningsAsErrorsOn -spec ${SPEC};
- if [ "${TRAVIS_TAG}" ]; then
echo "Stable build" &&
export STABLE_OR_DAILY=StableBuild;
else
qmake -r ${TRAVIS_BUILD_DIR}/qgroundcontrol.pro CONFIG+=${CONFIG} -spec ${SPEC};
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
......@@ -165,14 +220,13 @@ script:
- if [[ "${SPEC}" = "linux-g++-64" && "${CONFIG}" = "debug" ]]; then
mkdir -p ~/.config/QtProject/ &&
cp ${TRAVIS_BUILD_DIR}/test/qtlogging.ini ~/.config/QtProject/ &&
./debug/qgroundcontrol-start.sh --unittest;
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}
# master development builds to beta track
- GOOGLE_PLAY_PKG=org.mavlink.qgroundcontrolbeta
- if [ "${TRAVIS_TAG}" ]; then
GOOGLE_PLAY_PKG=org.mavlink.qgroundcontrol;
elif [ "${TRAVIS_BRANCH}" = "master" ]; then
......@@ -180,28 +234,31 @@ after_success:
else
GOOGLE_PLAY_PKG=none;
fi
- if [[ "${SPEC}" = "android-g++" && "${TRAVIS_PULL_REQUEST}" = "false" && "${GOOGLE_PLAY_PKG}" != "none" ]]; then
- 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 &&
./tools/google_play_upload.py production ${GOOGLE_PLAY_PKG} ${SHADOW_BUILD_DIR}/release/package/QGroundControl.apk;
./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}/release ${SHADOW_BUILD_DIR}/release/package;
./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}/release/package
local_dir: ${SHADOW_BUILD_DIR}/package
upload-dir: builds/${TRAVIS_BRANCH}
acl: public_read
region: us-west-2
......@@ -212,11 +269,12 @@ deploy:
# 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}/release/package
local_dir: ${SHADOW_BUILD_DIR}/package
upload-dir: latest
acl: public_read
region: us-west-2
......@@ -227,11 +285,12 @@ deploy:
# 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}/release/package
local_dir: ${SHADOW_BUILD_DIR}/package
upload-dir: ${TRAVIS_BRANCH}
acl: public_read
region: us-west-2
......@@ -242,16 +301,18 @@ deploy:
# 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}/release/package/qgroundcontrol.*
- ${SHADOW_BUILD_DIR}/release/package/QGroundControl.*
- ${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:
......
configs:
dev:
'qt_deps_tarball': 'Qt5.11.0-gcc_64-min.tar.bz2'
'qt_deps_unpack_parent_dir': '/tmp'
'qt_deps_tarball': 'Qt5.12.6-gcc_64-min.tar.bz2'
'qt_deps_unpack_parent_dir': '/home/vagrant'
'qt_deps_unpack_dir': '/tmp/Qt5.11-gcc_64/5.11.0'
'qt_deps_bin_unpack_dir': '/tmp/Qt5.11-gcc_64/5.11.0/gcc_64/bin'
'qt_deps_lib_unpack_dir': '/tmp/Qt5.11-gcc_64/5.11.0/gcc_64/lib'
'qt_deps_plugins_unpack_dir': '/tmp/Qt5.11-gcc_64/5.11.0/gcc_64/plugins'
'qt_deps_qml_unpack_dir': '/tmp/Qt5.11-gcc_64/5.11.0/gcc_64/qml'
'qt_deps_unpack_dir': '/home/vagrant/Qt5.12-gcc_64/5.12.6'
'qt_deps_bin_unpack_dir': '/home/vagrant/Qt5.12-gcc_64/5.12.6/gcc_64/bin'
'qt_deps_lib_unpack_dir': '/home/vagrant/Qt5.12-gcc_64/5.12.6/gcc_64/lib'
'qt_deps_plugins_unpack_dir': '/home/vagrant/Qt5.12-gcc_64/5.12.6/gcc_64/plugins'
'qt_deps_qml_unpack_dir': '/home/vagrant/Qt5.12-gcc_64/5.12.6/gcc_64/qml'
'project_root_dir': '/vagrant'
......@@ -20,4 +20,4 @@ configs:
'spec': 'linux-g++-64'
'shadow_build_dir': '/vagrant/shadow-build'
'pro': '/vagrant/qgroundcontrol.pro'
'deps_url': 'https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.11.0-gcc_64-min.tar.bz2'
'deps_url': 'https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.12.6-gcc_64-min.tar.bz2'
cmake_minimum_required(VERSION 3.2)
cmake_minimum_required(VERSION 3.10)
project(QGroundControl LANGUAGES CXX)
project(QGroundControl LANGUAGES C CXX)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug;Release;RelWithDebInfo;MinSizeRel;Coverage")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
include(FeatureSummary)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
add_compile_options(-Wall -Wextra)
endif()
# CMake build type
# Debug Release RelWithDebInfo MinSizeRel Coverage
if (NOT CMAKE_BUILD_TYPE)
......@@ -11,37 +23,11 @@ if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Build type" FORCE)
endif()
if(DEFINED ENV{QT_VERSION})
set(QT_VERSION $ENV{QT_VERSION})
endif()
if(NOT QT_VERSION)
# try Qt 5.9.5 if none specified
set(QT_VERSION "5.9.5")
endif()
if(DEFINED ENV{QT_MKSPEC})
set(QT_MKSPEC $ENV{QT_MKSPEC})
endif()
if(UNIX AND NOT APPLE)
set(LINUX TRUE)
endif()
if(NOT QT_MKSPEC)
if(APPLE)
set(QT_MKSPEC clang_64)
elseif(LINUX)
set(QT_MKSPEC gcc_64)
elseif(WIN32)
set(QT_MKSPEC msvc2017_64)
#set(QT_MKSPEC winrt_x64_msvc2017)
endif()
endif()
# Add folder where are supportive functions
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
# Configure Qt5 to get necessary variables
include(Qt5QGCConfiguration)
message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
message(STATUS "Qt version: ${QT_VERSION}")
message(STATUS "Qt spec: ${QT_MKSPEC}")
......@@ -50,31 +36,14 @@ set(COMPANY "Mavlink")
set(COPYRIGHT "Copyright (c) 2018 QGroundControl. All rights reserved.")
set(IDENTIFIER "io.mavlink.qgroundcontrol")
execute_process(
COMMAND git submodule update --init
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
execute_process(
COMMAND git describe --always --tags
OUTPUT_VARIABLE git_tag
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
add_definitions(
-DQGC_APPLICATION_NAME="QGroundControl"
-DQGC_ORG_NAME="QGroundControl.org"
-DQGC_ORG_DOMAIN="org.qgroundcontrol"
)
message(STATUS "QGroundControl version: ${git_tag}")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
include(Git)
message(STATUS "QGroundControl version: ${GIT_VERSION}")
#=============================================================================
# ccache
......@@ -85,12 +54,67 @@ if (CCACHE AND CCACHE_PROGRAM AND NOT DEFINED ENV{CCACHE_DISABLE})
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
endif()
#=============================================================================
# Compile QML
#
option(COMPILE_QML "Pre-compile QML files using the Qt Quick compiler." FALSE)
add_feature_info(COMPILE_QML COMPILE_QML "Pre-compile QML files using the Qt Quick compiler.")
if(COMPILE_QML)
find_package(Qt5QuickCompiler)
set_package_properties(Qt5QuickCompiler PROPERTIES
DESCRIPTION "Pre-compile QML files using the Qt Quick compiler."
TYPE OPTIONAL
)
endif()
#=============================================================================
# Debug QML
#
option(DEBUG_QML "Build QGroundControl with QML debugging/profiling support." FALSE)
add_feature_info(DEBUG_QML DEBUG_QML "Build QGroundControl with QML debugging/profiling support.")
if(DEBUG_QML)
message(STATUS "To enable the QML debugger/profiler, run with: '-qmljsdebugger=port:1234'")
add_definitions(-DQMLJSDEBUGGER)
add_definitions(-DQT_DECLARATIVE_DEBUG)
add_definitions(-DQT_QML_DEBUG)
endif()
#=============================================================================
# GStreamer
#
find_package(PkgConfig)
pkg_check_modules(GST
gstreamer-1.0>=1.14
gstreamer-video-1.0>=1.14
gstreamer-gl-1.0>=1.14
egl
)
if (GST_FOUND)
include_directories(
${GST_INCLUDE_DIRS}
src/Taisync
src/Microhard
)
add_definitions(
-DQGC_GST_STREAMING
-DQGC_GST_TAISYNC_ENABLED
-DQGC_GST_MICROHARD_ENABLED
)
endif()
add_definitions(
-DQGC_ENABLE_MAVLINK_INSPECTOR
)
#=============================================================================
# Qt5
#
find_package(Qt5 ${QT_VERSION}
COMPONENTS
Bluetooth
Charts
Concurrent
Core
Location
......@@ -98,7 +122,9 @@ find_package(Qt5 ${QT_VERSION}
Network
Positioning
Quick
QuickControls2
QuickWidgets
OpenGL
Sql
Svg
Test
......@@ -107,9 +133,7 @@ find_package(Qt5 ${QT_VERSION}
Xml
REQUIRED
HINTS
$ENV{HOME}/Qt/${QT_VERSION}/${QT_MKSPEC}
$ENV{QT_PATH}/${QT_VERSION}/${QT_MKSPEC}
C:/Qt
${QT_LIBRARY_HINTS}
)
if(NOT QT_MKSPEC MATCHES "winrt")
......@@ -118,50 +142,12 @@ if(NOT QT_MKSPEC MATCHES "winrt")
SerialPort
REQUIRED
HINTS
$ENV{HOME}/Qt/${QT_VERSION}/${QT_MKSPEC}
$ENV{QT_PATH}/${QT_VERSION}/${QT_MKSPEC}
C:/Qt
)
endif()
if(${CMAKE_BUILD_TYPE} MATCHES "Debug")
include(CTest)
enable_testing()
add_definitions(-DUNITTEST_BUILD)
endif()
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# clang and AppleClang
add_compile_options(
-Wall
-Wextra
-Wno-address-of-packed-member # ignore for mavlink
)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
# GCC
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9)
add_compile_options(-fdiagnostics-color=always)
endif()
add_compile_options(
-Wall
-Wextra
)
elseif (WIN32)
add_definitions(-D_USE_MATH_DEFINES)
add_compile_options(
/wd4244 # warning C4244: '=': conversion from 'double' to 'float', possible loss of data
${QT_LIBRARY_HINTS}
)
endif()
# TODO: get qtquick compiler working
#qtquick_compiler_add_resources(QGC_RESOURCES ${QGC_RESOURCES}
#find_package(Qt5QuickCompiler)
# Sets the default flags for compilation and linking.
include(CompileOptions)
include_directories(
libs/eigen
......@@ -177,11 +163,9 @@ add_subdirectory(libs)
add_subdirectory(src)
set(QGC_RESOURCES
#HackAndroidFileDialog.qrc
HackFileDialog.qrc
qgcresources.qrc
qgroundcontrol.qrc
qgcimages.qrc
src/FirmwarePlugin/APM/APMResources.qrc
src/FirmwarePlugin/PX4/PX4Resources.qrc
src/Airmap/airmap.qrc
......@@ -213,56 +197,5 @@ if(NOT QT_MKSPEC MATCHES "winrt")
)
endif()
if(LINUX)
elseif(APPLE)
get_target_property(_qmake_executable Qt5::qmake IMPORTED_LOCATION)
get_filename_component(_qt_bin_dir "${_qmake_executable}" DIRECTORY)
find_program(MACDEPLOYQT_EXECUTABLE macdeployqt HINTS "${_qt_bin_dir}")
add_custom_command(TARGET QGroundControl
POST_BUILD
COMMAND
${MACDEPLOYQT_EXECUTABLE} $<TARGET_FILE_DIR:QGroundControl>/../.. -appstore-compliant -qmldir=${CMAKE_SOURCE_DIR}/src
COMMAND
rsync -a ${CMAKE_SOURCE_DIR}/libs/lib/Frameworks $<TARGET_FILE_DIR:QGroundControl>/../../Contents/
COMMAND
${CMAKE_INSTALL_NAME_TOOL} -change "@rpath/SDL2.framework/Versions/A/SDL2" "@executable_path/../Frameworks/SDL2.framework/Versions/A/SDL2" $<TARGET_FILE:QGroundControl>
)
set_target_properties(QGroundControl PROPERTIES MACOSX_BUNDLE YES)
elseif(WIN32)
if(MSVC) # Check if we are using the Visual Studio compiler
set_target_properties(${PROJECT_NAME} PROPERTIES
WIN32_EXECUTABLE YES
LINK_FLAGS "/ENTRY:mainCRTStartup"
)
endif()
# deploy
include(Windeployqt)
windeployqt(QGroundControl "QGroundControl-installer.exe")
elseif(ANDROID)
include(AddQtAndroidApk)
add_qt_android_apk(QGroundControl.apk QGroundControl
PACKAGE_NAME "io.mavlink.qgroundcontrol"
#KEYSTORE ${CMAKE_CURRENT_LIST_DIR}/mykey.keystore myalias
#KEYSTORE_PASSWORD xxxxx
)
elseif(LINUX)
# TODO: investigate https://github.com/probonopd/linuxdeployqt
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/release/package/QGroundControl.AppImage
COMMAND ${CMAKE_SOURCE_DIR}/deploy/create_linux_appimage.sh ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/release/package;
DEPENDS QGroundControl
USES_TERMINAL
)
add_custom_target(appimage DEPENDS ${CMAKE_BINARY_DIR}/release/package/QGroundControl.AppImage)
endif()
include(QGCDeploy)
# Running QGC on CentOS 7
This information has moved to the [QGroundControl Developer Guide](https://dev.qgroundcontrol.com/en/getting_started/CentOS.html).
......@@ -2,19 +2,154 @@
Note: This file only contains high level features or important fixes.
## 3.6
## 4.1 - Daily build
### 3.6.0 - Daily Build
* Load Parameters From File: Support loading parameters which don't currently existing on the vehicle.
* Load Parameters From File: Add dialog which shows diff of file and vehicle params. Selective param upload from file.
* Video Streaming: New camera control supports capturing individual images from the stream
* Fly: Press and hold on arm button will change it to Force Arm. Click again to force arm.
* VTOL: General setting for transition distance which affects Plan takeoff, landing pattern creation
* VTOL: Much better VTOL support throughout QGC
* Maps: Support zoom up to level 23 even if map provider doesn't provide tiles that high
* Settings/Mavlink: Add ability to forward mavlink traffic out specified UDP port
* Support mavlink terrain protocol which queries gcs for terrain height information. Allows planning missions with TERRAIN\_FRAME.
* Fly: New instrument values display/editing support
* Plan: Added new VTOL Landing Pattern support
* Plan: Much better conversion of missions to KML for 3d visualization/verification of missions
* Plan: New Terrain Profile display including terrain collision indications on profile and in patterns (Survey, CorridorScan, etc)
* Fly: Rearchitect view and controls within for much better customization support in custom builds
## 4.0
## 4.0.9 - Not yet released
* Don't auto-connect to second Cube Orange/Yellow composite port
* Plan: Fix bugs associated with mission commands which specify and altitude but no lat/lon
* Fix bug which could prevent view switching from working after altitude mode warning dialog would pop up
## 4.0.8 - Stable
* iOS: Modify QGC file storage location to support new Files app
* Mobile: Fix Log Replay status bar file selection
## 4.0.7 - Stable
* Fix video page sizing
* Virtual Joystick: Fix right stick centering. Fix/add support for rover/sub reverse throttle support.
* Fix display of multiple ADSB vehicles
### 4.0.6 - Stable
* Analyze/Log Download - Fix download on mobile versions of QGC
* Fly: Fix problems where Continue Mission and Change Altitude were not available after a Mission Pause.
* PX4 Flow: Fix video display problem
### 4.0.5 - Stable
* Solo: Fix mission upload failures
* Plan: Fix crash when using Create Plan - Survey for fixed wing vehicle
### 4.0.4
* Mobile File Save: Fix problem with incorrect file extension being added
* Radio Setup: Fix problem with Spektrum bind
* Plan/Fly: Bring back waypoint number display in map items
### 4.0.3
* Plan: Add setting for takeoff item not required
* Plan: Takeoff item must be added prior to allowing other item types to enable
* Video: Add low latency mode as optional configuration setting (defaults to false)
* ArduPilot: Fix generated list of available firmwares
### 4.0.2
* Fix Mavlink V2 protocol negotation based on capability bits
* Fix waiting for AUTOPILOT_VERSION response to get capability bits
* ArduPilot: Above two fixes make fence/rally support enabling more reliable
### 4.0.1
* Fix ArduPilot current mission item tracking in Fly view
* Fix ADSB vehicle display
* Fix map positioning bug in Plan view
* Fix Windows 0xcc000007b startup error causes by incorrect VC runtimes being installed.
### 4.0.0
* Added ROI option during manual flight.
* Windows: Move builds to 64 bit, Qt 5.12.5
* Plan: ROI button will switch to Cancel ROI at appropriate times
* Plan: When ROI is selected the flight path lines which are affected by the ROI will change color
* ADSB: Added support for connecting to SBS server. Adds support for ADSB data from USB SDR Dongle running 'dump1090 --net' for example.
* Toolbar: Scrollable left/right on small screens like phones
* Plan View: New create plan UI for initial plan creation
* New Corridor editing tools ui. Includes ability to trace polyline by clicking.
* New Polygon editing tools ui. Includes ability to trace polygon by clicking.
* More performant flight path display algorithm. Mobile builds no longer show limited path length.
* ArduPilot: Add Motor Test vehicle setup page
* Compass Instrument: Add indicators for Home, COG and Next Waypoint headings.
* Log Replay: Support changing speed of playback
* Basic object avoidance added to vehicles.
* Added ability to set a joystick button to be single action or repeated action while the button is held down.
* Rework joysticks. Fixed several issues and updated setup UI.
* Adding support for UDP RTP h.265 video streams
* For text to speech engine on Linux to English (all messages are in English)
* Automated the ingestion of localization from Crowdin
* Automated the generation of language resources into the application
* Added all languages that come from Crowdin, even if empty.
* Allow dynamic language changes
* Check and respect camera storage status
* QGC now requires Qt 5.11 or greater. The idea is to standardize on Qt 5.12 (LTS). Just waiting for a solution for Windows as Qt dropped support for 32-bit.
* New, QtQuick MAVLink Inspector. The basics are already there but it still needs the ability to filter compID.
* Fixed application storage location on iOS. It was trying to save things where it could not.
* Basic support for secondary, thermal imaging with video streaming. If a camera provides both visual spectrum and thermal imaging, you have the option of displaying both at the same time.
* Better handling of fonts for Korean and Chinese locales. QGC now has builtin fonts for Korean (where some unusable font was being used). I still need to know if Chinese will need its own font as well.
* ArduPilot: Copter - Add suppor for Simple and Super Simple flight modes
* ArduPilot: Flight Mode setup - Switch Options were not showing up for all firmware revs
* ArduCopter: Add PID Tuning page to Tuning Setup
* ArduPilot: Copter - Advanced Tuning support
* ArduPilot: Rover - Frame setup support
* ArduPilot: Copter - Update support to 3.5+
* ArduPilot: Plane - Update support to 3.8+
* ArduPilot: Rover - Update support to 3.4+
* ArduPilot: Rework Airframe setup ui
* Plan/Pattern: Support named presets to simplify commonly used settings setup. Currently only supported by Survey.
* ArduCopter: Handle 3.7 parameter name change from CH#_OPT to RC#_OPTION.
* Improved support for flashing/connecting to ChibiOS bootloaders boards.
* Making the camera API available to all firmwares, not just PX4.
* ArduPilot: Support configurable mavlink stream rates. Available from Settings/Mavlink page.
* Major rewrite and bug fix pass through Structure Scan. Previous version had such bad problems that it can no longer be supported. Plans with Structure Scan will need to be recreated. New QGC will not load old Structure Scan plans.
* Major rewrite and bug fix pass through Structure Scan. Previous version had such bad problems that it can no longer be supported. Plans with Structure Scan will need to be recreated. New QGC will not load old Structure Scan plans.
## 3.5
### 3.5.5
* Fix mavlink message memset which cause wrong commands to be sent on ArduPilot GotoLocation.
* Disable Pause when fixed wing is on landing approach.
### 3.5.4
* Update windows drivers
* Add support for FMUK66 flashing/connection
* Guard against null geometry coming from gstreamer which can cause crashes
* Add .apj file selection support to custom firmware flash
### 3.5.3
* Change minimum RTK Survey-In limit to 0.01 meters
* Change Windows driver detection logic
* Fix crash when clicking on GeoFence polygon vertex
* PX4: Fix missing ```MC_YAW_FF``` parameter in PID Tuning
* ArduPilot: Fix parameter file save generating bad characters from git hash
### 3.5.2
* Fix Ubuntu AppImage startup failure
### 3.5.1 - Not yet released
### 3.5.1
* Update Windows usb drivers
* Add ArduPilot CubeBlack Service Bulletin check
* Fix visibility of PX4/ArduPilot logo in toolbar
* Fix tile set count but in OfflineMaps which would cause image and elevation tile set to have incorrect counts and be incorrectly marked as download incomplete.
### 3.5.0 - Stable
### 3.5.0
* Plan GeoFence: Fix loading of fence from intermediate 3.4 code
* Structure Scan: Fix loading of structure scan height
* ArduPilot: Fix location of planned home position when not connected to vehicle. Issue #6840.
......
......@@ -85,8 +85,11 @@ void CodingStyle::_methodWithManyArguments(QWidget* parent,
const QString& caption,
const QString& dir,
Options options1,
Options options2,
Options /* options2 */,
Options options3)
{
// options2 is an unused method argument.
// Do not use Q_UNUSUED and do not just remove the argument name and leave the type.
// Implementataion here...
}
......@@ -9,18 +9,14 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleVersion</key>
<string>###</string>
<string>${QMAKE_FULL_VERSION}</string>
<key>CFBundleShortVersionString</key>
<string>#.#.#</string>
<key>CFBundleSignature</key>
<string>????</string>
<string>${QMAKE_FULL_VERSION}</string>
<key>CFBundleExecutable</key>
<string>@EXECUTABLE@</string>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>org.qgroundcontrol.qgroundcontrol</string>
<key>NOTE</key>
<string>Open source ground control app provided by QGroundControl dev team</string>
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
<key>NSCameraUsageDescription</key>
<string>QGC uses UVC camera devices for FPV</string>
<string>Camera devices used for FPV</string>
</dict>
</plist>
<RCC>
<qresource prefix="/qml">
<file alias="QGroundControl/Controls/HackFileDialog.qml">src/QmlControls/HackAndroidFileDialog.qml</file>
</qresource>
</RCC>
<RCC>
<qresource prefix="/qml">
<file alias="QGroundControl/Controls/HackFileDialog.qml">src/QmlControls/HackFileDialog.qml</file>
</qresource>
</RCC>
This system is for posting bugs or feature requests ONLY. For questions about how to use or build QGC see: http://qgroundcontrol.com/#resources
# This system is for posting bugs or feature requests ONLY. Support questions will be automatically closed with no response.
# For questions about how to use or build QGC see: http://qgroundcontrol.com/#resources
----
# To post a bug report
When posting bug reports, include the following informaiton:
- Ground station operating system.
- QGroundControl version and build (daily, stable, self-built from source, etc.)
......
pipeline {
agent none
stages {
stage('build') {
parallel {
stage('Android Release') {
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
QGC_CONFIG = 'release'
QMAKE_VER = "5.11.0/android_armv7/bin/qmake"
}
agent {
docker {
image 'mavlink/qgc-build-android:2019-02-03'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'ccache -z'
sh 'git submodule deinit -f .'
sh 'git clean -ff -x -d .'
sh 'git submodule update --init --recursive --force'
sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
sh 'cd build; make -j`nproc --all`'
sh 'ccache -s'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('Linux Debug') {
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
QGC_CONFIG = 'debug'
QMAKE_VER = "5.11.0/gcc_64/bin/qmake"
}
agent {
docker {
image 'mavlink/qgc-build-linux:2019-02-03'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'ccache -z'
sh 'git submodule deinit -f .'
sh 'git clean -ff -x -d .'
sh 'git submodule update --init --recursive --force'
sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
sh 'cd build; make -j`nproc --all`'
sh 'ccache -s'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('Linux Debug (cmake)') {
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
CMAKE_BUILD_TYPE = 'Debug'
QT_VERSION = "5.11.0"
QT_MKSPEC = "gcc_64"
}
agent {
docker {
image 'mavlink/qgc-build-linux:2019-02-03'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'ccache -z'
sh 'make distclean'
sh 'make submodulesclean'
sh 'make linux'
//sh 'make linux check' // TODO: needs Xvfb or similar
sh 'ccache -s'
sh 'make distclean'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('Linux Release') {
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
QGC_CONFIG = 'release'
QMAKE_VER = "5.11.0/gcc_64/bin/qmake"
}
agent {
docker {
image 'mavlink/qgc-build-linux:2019-02-03'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'ccache -z'
sh 'git submodule deinit -f .'
sh 'git clean -ff -x -d .'
sh 'git submodule update --init --recursive --force'
withCredentials([file(credentialsId: 'QGC_Airmap_api_key', variable: 'AIRMAP_API_HEADER')]) {
sh 'cp $AIRMAP_API_HEADER ${WORKSPACE}/src/Airmap/Airmap_api_key.h'
}
sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
sh 'cd build; make -j`nproc --all`'
sh 'ccache -s'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('Linux Release (cmake)') {
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
CMAKE_BUILD_TYPE = 'Release'
QT_VERSION = "5.11.0"
QT_MKSPEC = "gcc_64"
}
agent {
docker {
image 'mavlink/qgc-build-linux:2019-02-03'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'ccache -z'
sh 'make distclean'
sh 'make submodulesclean'
sh 'make linux'
sh 'ccache -s'
sh 'make distclean'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('OSX Debug') {
agent {
node {
label 'mac'
}
}
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
QGC_CONFIG = 'debug'
QMAKE_VER = "5.11.0/clang_64/bin/qmake"
}
steps {
sh 'export'
sh 'ccache -z'
sh 'git submodule deinit -f .'
sh 'git clean -ff -x -d .'
sh 'git submodule update --init --recursive --force'
sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
sh 'cd build; make -j`sysctl -n hw.ncpu`'
sh 'ccache -s'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('OSX Debug (cmake)') {
agent {
node {
label 'mac'
}
}
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
CMAKE_BUILD_TYPE = 'Debug'
QT_VERSION = "5.11.0"
QT_MKSPEC = "clang_64"
}
steps {
sh 'export'
sh 'ccache -z'
sh 'make distclean'
sh 'make submodulesclean'
sh 'make mac'
sh 'ccache -s'
sh 'make distclean'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('OSX Release') {
agent {
node {
label 'mac'
}
}
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
QGC_CONFIG = 'installer'
QMAKE_VER = "5.11.0/clang_64/bin/qmake"
}
stages {
stage('Clean Checkout') {
steps {
sh 'export'
sh 'ccache -z'
sh 'git submodule deinit -f .'
sh 'git clean -ff -x -d .'
sh 'git submodule update --init --recursive --force'
}
}
stage('Add Airmap API key') {
steps {
withCredentials([file(credentialsId: 'QGC_Airmap_api_key', variable: 'AIRMAP_API_HEADER')]) {
sh 'cp $AIRMAP_API_HEADER ${WORKSPACE}/src/Airmap/Airmap_api_key.h'
}
}
when {
anyOf {
branch 'master';
branch 'Stable_*'
}
}
}
stage('Build OSX Release') {
steps {
sh 'mkdir build; cd build; ${QT_PATH}/${QMAKE_VER} -r ${WORKSPACE}/qgroundcontrol.pro CONFIG+=${QGC_CONFIG} CONFIG+=WarningsAsErrorsOn'
sh 'cd build; make -j`sysctl -n hw.ncpu`'
archiveArtifacts(artifacts: 'build/**/*.dmg', fingerprint: true)
sh 'ccache -s'
}
}
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
stage('OSX Release (cmake)') {
agent {
node {
label 'mac'
}
}
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
CMAKE_BUILD_TYPE = 'Release'
QT_VERSION = "5.11.0"
QT_MKSPEC = "clang_64"
}
steps {
sh 'export'
sh 'ccache -z'
sh 'make distclean'
sh 'make submodulesclean'
sh 'make mac'
sh 'ccache -s'
sh 'make distclean'
}
post {
cleanup {
sh 'git clean -ff -x -d .'
}
}
}
} // parallel
} // stage('build')
} // stages
environment {
CCACHE_CPP2 = '1'
CCACHE_DIR = '/tmp/ccache'
QT_FATAL_WARNINGS = '1'
}
options {
buildDiscarder(logRotator(numToKeepStr: '10', artifactDaysToKeepStr: '30'))
timeout(time: 60, unit: 'MINUTES')
}
}
---
name: Bug report
about: Create a report to help us improve
---
**Describe the bug**
A clear and concise description of the bug.
**To Reproduce**
Steps to reproduce the behavior:
1. Drone switched on '...'
2. Uploaded mission '....' (attach QGC mission file)
3. Took off '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Log Files and Screenshots**
*Always* add screenshots and the QGC console log.
**Drone (please complete the following information):**
- Describe the type of drone.
- Photo of the IMU / autopilot setup if possible.
**Additional context**
Add any other context about the problem here.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.