diff --git a/.gitignore b/.gitignore index 53cb0216899fc56d433bad65e0e6c358928419fe..b2fae31429859ec917a64abe17e0b1d3cb2e76e1 100644 --- a/.gitignore +++ b/.gitignore @@ -67,3 +67,5 @@ ui_* *.so* *.moc *.prl +git_version.cpp +git_version.obj diff --git a/QGCApplication.pro b/QGCApplication.pro index 44d45bd90f3e030de57e9c1cc4b5f5672234fa6b..7892edcf73192ece672a618722d151b41d7be008 100644 --- a/QGCApplication.pro +++ b/QGCApplication.pro @@ -18,9 +18,10 @@ # ------------------------------------------------- include(QGCCommon.pri) +include(git_version.pri) TARGET = qgroundcontrol -TEMPLATE = app +TEMPLATE = app # Load additional config flags from user_config.pri exists(user_config.pri):infile(user_config.pri, CONFIG) { diff --git a/deploy/ubuntu_ppa b/deploy/ubuntu_ppa old mode 100644 new mode 100755 index d9cf41645a4a4b6f8228838da605ee046e99b9da..5d17661856ee89d4e4b85bc4115c45834c2a9e59 --- a/deploy/ubuntu_ppa +++ b/deploy/ubuntu_ppa @@ -1,17 +1,28 @@ #! /bin/bash -version="2.4" -rsync -av --delete --exclude=.git ~/git/qgroundcontrol/ ~/tmp/qgroundcontrol-${version}/ +tmpdir=`mktemp -d` +long_version=`git describe --always --tags` +short_version=`git describe --always --tags | cut -d "-" -f 1,2` -cd ~/tmp -tar pczf qgroundcontrol_${version}.orig.tar.gz qgroundcontrol-${version} +version=${long_version:1} +dir_version=${short_version:1} +echo $version -cd ~/tmp/qgroundcontrol-${version}/ -debuild -S +debchange -v ${version} --distribution trusty + +qmake -r qgroundcontrol.pro +make git_ver + +rsync -av --delete --exclude={.git,build-release,release,Makefile\*} . ${tmpdir}/qgroundcontrol-${dir_version}/ -dput ppa:qgroundcontrol/ppa qgroundcontrol_${version}-0ubuntu1_source.changes +cd ${tmpdir} +tar pczf qgroundcontrol_${dir_version}.orig.tar.gz qgroundcontrol-${dir_version} + +cd ${tmpdir}/qgroundcontrol-${dir_version}/ +debuild -S +dput ppa:qgroundcontrol/ppa ${tmpdir}/qgroundcontrol_${version}_source.changes # test building the source deb locally -debuild --prepend-path=/usr/lib/ccache -sa +#debuild --prepend-path=/usr/lib/ccache -sa diff --git a/git_version.pri b/git_version.pri new file mode 100644 index 0000000000000000000000000000000000000000..229fcbe474714d70810f04bba85a132342d4e873 --- /dev/null +++ b/git_version.pri @@ -0,0 +1,26 @@ +# set the QGC version from git + +exists ($$PWD/.git) { + GIT_DESCRIBE = $$system(git --git-dir $$PWD/.git --work-tree $$PWD describe --always --tags) + WindowsBuild { + QGC_GIT_VER = echo extern \"C\" { const char *git_version() { return \"$$GIT_DESCRIBE\"; } } > git_version.cpp + LIBS += git_version.obj + } else { + QGC_GIT_VER = echo \"extern \\\"C\\\" { const char *git_version() { return \\\"$$GIT_DESCRIBE\\\"; } }\" > git_version.cpp + LIBS += git_version.o + } +} + +WindowsBuild { + LIBS += git_version.obj +} else { + LIBS += git_version.o +} + +CONFIG(debug) { + GIT_VERSION_CXXFLAGS = $$QMAKE_CXXFLAGS_DEBUG +} else { + GIT_VERSION_CXXFLAGS = $$QMAKE_CXXFLAGS_RELEASE +} + +QMAKE_PRE_LINK += $$QGC_GIT_VER && $$QMAKE_CXX -c $$GIT_VERSION_CXXFLAGS git_version.cpp diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index 6928aadf96b2ef13c0e8365a3b6c38315f2aa07e..d577d25b70df10639ca792d8a975989a8f59ecfa 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -22,6 +22,8 @@ CONFIG += ordered SUBDIRS = ./QGCLocationPlugin.pro SUBDIRS += ./QGCApplication.pro +include(git_version.pri) + QGCApplication.depends = QGCLocationPlugin message(Qt version $$[QT_VERSION]) @@ -30,3 +32,6 @@ message(Qt version $$[QT_VERSION]) error("Unsupported Qt version, 5.4+ is required") } +message(QGroundControl version $${GIT_DESCRIBE}) +git_ver.commands = $$QGC_GIT_VER +QMAKE_EXTRA_TARGETS += git_ver diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index 2d4260b16d4947776b9d12dd55ba34c5f39c81f0..e9d6b1d3c936d730060ab97ed33646d4303bd3f8 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -48,6 +48,7 @@ GST_PLUGIN_STATIC_DECLARE(QTVIDEOSINK_NAME); G_END_DECLS #endif +#include "git_version.h" #include "configuration.h" #include "QGC.h" #include "QGCApplication.h" @@ -253,10 +254,12 @@ QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting) setOrganizationName(QGC_ORG_NAME); setOrganizationDomain(QGC_ORG_DOMAIN); - // Version string is build from component parts. Format is: - // vMajor.Minor.BuildNumber BuildType - QString versionString("v%1.%2.%3 %4"); - versionString = versionString.arg(QGC_APPLICATION_VERSION_MAJOR).arg(QGC_APPLICATION_VERSION_MINOR).arg(QGC_APPLICATION_VERSION_BUILDNUMBER).arg(QGC_APPLICATION_VERSION_BUILDTYPE); + QString versionString(git_version()); + // stable versions are on tags (v1.2.3) + // development versions are full git describe versions (v1.2.3-18-g879e8b3) + if (versionString.length() > 8) { + versionString.append(" (Development)"); + } this->setApplicationVersion(versionString); // Set settings format diff --git a/src/QGCConfig.h b/src/QGCConfig.h index 9772e411b44324a0bfb4aceb7a5068dd43cfb33e..517ec21126c2c6f9e5718fe131189666e4320a7e 100644 --- a/src/QGCConfig.h +++ b/src/QGCConfig.h @@ -18,21 +18,4 @@ #define QGC_ORG_NAME "QGroundControl.org" #define QGC_ORG_DOMAIN "org.qgroundcontrol" -#define QGC_APPLICATION_VERSION_MAJOR 2 -#define QGC_APPLICATION_VERSION_MINOR 7 - -// The following #definess can be overriden from the command line so that automated build systems can -// add additional build identification. - -// Only comes from command line -//#define QGC_APPLICATION_VERSION_COMMIT "..." - -#ifndef QGC_APPLICATION_VERSION_BUILDNUMBER -#define QGC_APPLICATION_VERSION_BUILDNUMBER 1 -#endif - -#ifndef QGC_APPLICATION_VERSION_BUILDTYPE -#define QGC_APPLICATION_VERSION_BUILDTYPE "(Stable)" -#endif - #endif // QGC_CONFIGURATION_H diff --git a/src/comm/MAVLinkProtocol.cc b/src/comm/MAVLinkProtocol.cc index b9c3f86da8d80469c1ca116237f7994a41bc5ddd..57ad20b4b219ee449f877801672c0f10b9f44b08 100644 --- a/src/comm/MAVLinkProtocol.cc +++ b/src/comm/MAVLinkProtocol.cc @@ -191,7 +191,7 @@ void MAVLinkProtocol::_linkStatusChanged(LinkInterface* link, bool connected) // Send command to start MAVLink // XXX hacky but safe // Start NSH - const char init[] = {0x0d, 0x0d, 0x0d}; + const char init[] = {0x0d, 0x0d, 0x0d, 0x0d}; link->writeBytes(init, sizeof(init)); const char* cmd = "sh /etc/init.d/rc.usb\n"; link->writeBytes(cmd, strlen(cmd)); diff --git a/src/git_version.h b/src/git_version.h new file mode 100644 index 0000000000000000000000000000000000000000..84dd2fbb58a93145c2ea4272cef578ca63e869df --- /dev/null +++ b/src/git_version.h @@ -0,0 +1,3 @@ +extern "C" { + const char *git_version(); +}