From d3df08b75e390dab53813edbeec66cb1f317e2cb Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sun, 12 Jun 2016 00:01:51 -0400 Subject: [PATCH] appimage add libdirectfb-1.2-9 (#3531) -general cleanup --- .travis.yml | 3 +- QGCSetup.pri | 2 + Vagrantfile | 2 +- deploy/create_linux_appimage.sh | 74 +++++++++++++------ deploy/qgroundcontrol-start.sh | 4 + .../qgroundcontrol.desktop | 5 +- 6 files changed, 62 insertions(+), 28 deletions(-) rename qgroundcontrol.desktop => deploy/qgroundcontrol.desktop (72%) diff --git a/.travis.yml b/.travis.yml index 27a1c37da..93888927a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -199,7 +199,7 @@ script: after_success: - if [[ "${TRAVIS_OS_NAME}" = "linux" && "${CONFIG}" = "installer" ]]; then - ${TRAVIS_BUILD_DIR}/deploy/create_linux_appimage.sh + ${TRAVIS_BUILD_DIR}/deploy/create_linux_appimage.sh ${TRAVIS_BUILD_DIR} ${SHADOW_BUILD_DIR}/release ${SHADOW_BUILD_DIR}/release/package ; fi - if [ "${TRAVIS_TAG}" ]; then @@ -238,6 +238,7 @@ deploy: file_glob: true file: - ${SHADOW_BUILD_DIR}/release/package/qgroundcontrol.* + - ${SHADOW_BUILD_DIR}/release/package/QGroundControl.* skip_cleanup: true on: tags: true diff --git a/QGCSetup.pri b/QGCSetup.pri index 0e7753450..bb9b03c87 100644 --- a/QGCSetup.pri +++ b/QGCSetup.pri @@ -154,6 +154,8 @@ LinuxBuild { # QGroundControl start script QMAKE_POST_LINK += && $$QMAKE_COPY $$BASEDIR/deploy/qgroundcontrol-start.sh $$DESTDIR + QMAKE_POST_LINK += && $$QMAKE_COPY $$BASEDIR/deploy/qgroundcontrol.desktop $$DESTDIR + QMAKE_POST_LINK += && $$QMAKE_COPY $$BASEDIR/resources/icons/qgroundcontrol.png $$DESTDIR } } diff --git a/Vagrantfile b/Vagrantfile index e49807d9c..19baeca19 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -17,7 +17,7 @@ Vagrant.configure(2) do |config| # the "dev configuration puts the build products and a suitable # environment into the /vagrant directory. This allows you to run # qgroundcontrol on the host machine with: - # "cd shadow-build/release; ../../deploy/qgroundcontrol-start.sh" + # "cd shadow-build/release; ./qgroundcontrol-start.sh" $config_shell = <<-'SHELL' sudo apt-get update -y diff --git a/deploy/create_linux_appimage.sh b/deploy/create_linux_appimage.sh index 83ad45423..488b2e685 100755 --- a/deploy/create_linux_appimage.sh +++ b/deploy/create_linux_appimage.sh @@ -2,28 +2,58 @@ set +e +if [[ $# -eq 0 ]]; then + echo 'create_linux_appimage.sh QGC_SRC_DIR QGC_RELEASE_DIR' + exit 1 +fi + +QGC_SRC=$1 +if [ ! -f ${QGC_SRC}/qgroundcontrol.pro ]; then + echo 'please specify path to qgroundcontrol source as the 1st argument' + exit 1 +fi + +QGC_RELEASE_DIR=$2 +if [ ! -f ${QGC_RELEASE_DIR}/qgroundcontrol ]; then + echo 'please specify path to qgroundcontrol release as the 2nd argument' + exit 1 +fi + +OUTPUT_DIR=${3-`pwd`} +echo "Output directory:" ${OUTPUT_DIR} + # Generate AppImage using the binaries currently provided by the project. # These require at least GLIBC 2.14, which older distributions might not have. # On the other hand, 2.14 is not that recent so maybe we can just live with it. -APP=qgroundcontrol - -mkdir -p /tmp/$APP/$APP.AppDir -cd /tmp/$APP/ -tar xf ${SHADOW_BUILD_DIR}/release/package/qgroundcontrol.tar.bz2 +APP=QGroundControl -wget -c http://ftp.us.debian.org/debian/pool/main/u/udev/udev_175-7.2_amd64.deb -wget -c http://ftp.us.debian.org/debian/pool/main/e/espeak/espeak_1.46.02-2_amd64.deb -wget -c http://ftp.us.debian.org/debian/pool/main/libs/libsdl1.2/libsdl1.2debian_1.2.15-5_amd64.deb +TMPDIR=`mktemp -d` +APPDIR=${TMPDIR}/$APP".AppDir" +mkdir -p ${APPDIR} -cd $APP.AppDir/ +cd ${TMPDIR} +wget -c --quiet http://ftp.us.debian.org/debian/pool/main/u/udev/udev_175-7.2_amd64.deb +wget -c --quiet http://ftp.us.debian.org/debian/pool/main/e/espeak/espeak_1.46.02-2_amd64.deb +wget -c --quiet http://ftp.us.debian.org/debian/pool/main/libs/libsdl1.2/libsdl1.2debian_1.2.15-5_amd64.deb -mv ../qgroundcontrol/* . -mv qgroundcontrol-start.sh AppRun +cd ${APPDIR} find ../ -name *.deb -exec dpkg -x {} . \; -# Get icon -cp ${TRAVIS_BUILD_DIR}/resources/icons/qgroundcontrol.png . +# copy libdirectfb-1.2.so.9 +cd ${TMPDIR} +wget -c --quiet http://ftp.us.debian.org/debian/pool/main/d/directfb/libdirectfb-1.2-9_1.2.10.0-5.1_amd64.deb +mkdir libdirectfb +dpkg -x libdirectfb-1.2-9_1.2.10.0-5.1_amd64.deb libdirectfb +cp -L libdirectfb/usr/lib/x86_64-linux-gnu/libdirectfb-1.2.so.9 ${APPDIR}/usr/lib/x86_64-linux-gnu/ + +# copy QGroundControl release into appimage +cp -r ${QGC_RELEASE_DIR}/* ${APPDIR}/ +rm -rf ${APPDIR}/package +mv ${APPDIR}/qgroundcontrol-start.sh ${APPDIR}/AppRun + +# copy icon +cp ${QGC_SRC}/resources/icons/qgroundcontrol.png ${APPDIR}/ cat > ./qgroundcontrol.desktop <<\EOF [Desktop Entry] @@ -31,24 +61,22 @@ Type=Application Name=QGroundControl GenericName=Ground Control Station Comment=UAS ground control station -Icon=qgroundcontrol.png +Icon=qgroundcontrol Exec=AppRun Terminal=false Categories=Utility; Keywords=computer; EOF -VERSION=$(strings qgroundcontrol | grep v[0-9*]\.[0-9*]\.[0-9*]-[0-9*] | head -n 1) +VERSION=$(strings ${APPDIR}/qgroundcontrol | grep '^v[0-9*]\.[0-9*].[0-9*]' | head -n 1) +echo QGC Version: ${VERSION} # Go out of AppImage -cd .. - -wget -c "https://github.com/probonopd/AppImageKit/releases/download/5/AppImageAssistant" # (64-bit) +cd ${TMPDIR} +wget -c --quiet "https://github.com/probonopd/AppImageKit/releases/download/5/AppImageAssistant" # (64-bit) chmod a+x ./AppImageAssistant -mkdir -p ../out -rm ../out/$APP".AppImage" || true -./AppImageAssistant ./$APP.AppDir/ ../out/$APP".AppImage" -# s3 deploys everything in release/package -cp ../out/$APP".AppImage" ${SHADOW_BUILD_DIR}/release/package/$APP".AppImage" +./AppImageAssistant ./$APP.AppDir/ ${TMPDIR}/$APP".AppImage" + +cp ${TMPDIR}/$APP".AppImage" ${OUTPUT_DIR}/$APP".AppImage" diff --git a/deploy/qgroundcontrol-start.sh b/deploy/qgroundcontrol-start.sh index 9cd6ba665..6e0a65a3c 100755 --- a/deploy/qgroundcontrol-start.sh +++ b/deploy/qgroundcontrol-start.sh @@ -3,4 +3,8 @@ HERE="$(dirname "$(readlink -f "${0}")")" export LD_LIBRARY_PATH="${HERE}/usr/lib/x86_64-linux-gnu":"${HERE}/Qt/libs":$LD_LIBRARY_PATH export QML2_IMPORT_PATH="${HERE}/Qt/qml" export QT_PLUGIN_PATH="${HERE}/Qt/plugins" + +# hack until icon issue with AppImage is resolved +mkdir -p ~/.icons && cp ${HERE}/qgroundcontrol.png ~/.icons + "${HERE}/qgroundcontrol" "$@" diff --git a/qgroundcontrol.desktop b/deploy/qgroundcontrol.desktop similarity index 72% rename from qgroundcontrol.desktop rename to deploy/qgroundcontrol.desktop index 9f815f8e1..83d0a4a60 100644 --- a/qgroundcontrol.desktop +++ b/deploy/qgroundcontrol.desktop @@ -1,10 +1,9 @@ [Desktop Entry] Type=Application -Name=qgroundcontrol +Name=QGroundControl GenericName=Ground Control Station Comment=UAS ground control station Icon=qgroundcontrol -Exec=qgroundcontrol +Exec=qgroundcontrol-start.sh Terminal=false Categories=Utility; -Keywords=computer; -- 2.22.0