#!/bin/bash ## ## Copyright (C) 2016 Simon Peter ## Copyright (C) 2017 Uwe Hermann ## This file is licensed under the terms of the MIT license. ## # Bundle PulseView and its dependencies as an AppImage for x86_64 Linux. # Note: This assumes the full sigrok stack has been installed into $PREFIX. PREFIX=$HOME/sr APPIMAGEKIT_OUTDIR=$HOME/AppImageKit/out ARCH=x86_64 PYVER=3.4 ######################################################################## # You usually don't have to change anything below this line ######################################################################## APP=PulseView LOWERAPP=${APP,,} export STATIC_FILES=`pwd`/contrib # Add $APPIMAGEKIT_OUTDIR so we can find all the binaries there. export PATH=$APPIMAGEKIT_OUTDIR:$PATH A="./$APP/$APP.AppDir" mkdir -p $A/usr/bin $A/usr/lib $A/usr/share cd ./$APP . $STATIC_FILES/functions.sh ######################################################################## # Get build products from $PREFIX ######################################################################## cd $APP.AppDir/ cp $PREFIX/bin/pulseview usr/bin/ chmod a+x usr/bin/* cp $PREFIX/lib/lib*.so* usr/lib/ cp -r $PREFIX/share/libsigrokdecode usr/share/ cp -r $PREFIX/share/sigrok-firmware usr/share/ # Reduce binary size strip usr/bin/* strip usr/lib/* ######################################################################## # AppRun is the main launcher that gets executed when AppImage is run ######################################################################## cp $APPIMAGEKIT_OUTDIR/AppRun . ######################################################################## # Copy desktop and icon file to AppDir for AppRun to pick them up ######################################################################## cp $STATIC_FILES/pulseview.desktop . cp $STATIC_FILES/sigrok-logo-notext.png . ######################################################################## # Copy in the dependencies that cannot be assumed to be available # on all target systems ######################################################################## copy_deps # Get all Qt5 plugins (won't be copied automatically). QT5PLUGINS=/usr/lib/x86_64-linux-gnu/qt5/plugins # Host (+ AppRun) path. mkdir -p .$QT5PLUGINS cp -r $QT5PLUGINS/accessible .$QT5PLUGINS cp -r $QT5PLUGINS/generic .$QT5PLUGINS cp -r $QT5PLUGINS/iconengines .$QT5PLUGINS cp -r $QT5PLUGINS/imageformats .$QT5PLUGINS cp -r $QT5PLUGINS/platforminputcontexts .$QT5PLUGINS cp -r $QT5PLUGINS/platforms .$QT5PLUGINS # Get some additional dependencies of the Qt5 plugins. ldd .$QT5PLUGINS/platforms/libqxcb.so | grep "=>" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ./usr/lib || true ldd .$QT5PLUGINS/imageformats/libqsvg.so | grep "=>" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ./usr/lib || true # Python 3 cp /usr/lib/x86_64-linux-gnu/libpython$PYVER* ./usr/lib mkdir -p ./usr/share/pyshared cp -r /usr/lib/python$PYVER/* ./usr/share/pyshared # AppRun expects this path. cp -r ./usr/share/pyshared/plat-x86_64-linux-gnu/* ./usr/share/pyshared ######################################################################## # Delete stuff that should not go into the AppImage ######################################################################## move_lib mv ./usr/lib/x86_64-linux-gnu/* usr/lib/ rm -r ./usr/lib/x86_64-linux-gnu/ delete_blacklisted # Remove some incorrectly/unintentionally copied files. rm -r ./home ######################################################################## # Determine the version of the app; also include needed glibc version ######################################################################## VER1="NIGHTLY" GLIBC_NEEDED=$(glibc_needed) VERSION=$VER1.glibc$GLIBC_NEEDED echo $VERSION ######################################################################## # Patch away absolute paths; it would be nice if they were relative ######################################################################## find usr/ -type f -executable -exec sed -i -e "s|/usr|././|g" {} \; ######################################################################## # AppDir complete # Now packaging it as an AppImage ######################################################################## cd .. VERSION=$VERSION $APPIMAGEKIT_OUTDIR/appimagetool ./$APP.AppDir/ mkdir -p ../out/ || true mv *.AppImage* ../out/