annotate deploy/linux/deploy-appimage.sh @ 641:327177b6bd3a v2.1pre2

Fix recently-introduced bug that made the scale disappear and tracks jump around when toggling off the spectrogram
author Chris Cannam
date Thu, 17 Oct 2019 14:44:55 +0100
parents b6c0c3e7ce99
children
rev   line source
Chris@612 1 #!/bin/bash
Chris@612 2
Chris@612 3 set -eu
Chris@612 4
Chris@612 5 program=tony
Chris@612 6 plugins="chp pyin"
Chris@612 7
Chris@612 8 get_id() {
Chris@612 9 if [ -d .hg ]; then
Chris@612 10 hg id | sed 's/[+ ].*$//'
Chris@612 11 elif [ -d .git ]; then
Chris@612 12 git rev-parse --short HEAD
Chris@612 13 else
Chris@612 14 echo "WARNING: can't figure out revision from VCS metadata" 1>&2
Chris@612 15 echo "unknown"
Chris@612 16 fi
Chris@612 17 }
Chris@612 18
Chris@612 19 version=$(get_id)
Chris@612 20
Chris@612 21 targetdir="${program}.AppDir"
Chris@612 22
Chris@612 23 echo "Target dir is $targetdir"
Chris@612 24
Chris@612 25 if [ -d "$targetdir" ]; then
Chris@612 26 echo "Target directory exists, not overwriting"
Chris@612 27 exit
Chris@612 28 fi
Chris@612 29
Chris@612 30 mkdir "$targetdir"
Chris@612 31
Chris@612 32 mkdir -p "$targetdir"/usr/bin
Chris@612 33 mkdir -p "$targetdir"/usr/lib/"$program"
Chris@612 34
Chris@612 35 cp "$program" "$targetdir"/usr/bin/
Chris@612 36
Chris@612 37 for p in $plugins ; do
Chris@612 38 cp "$p.so" "$targetdir"/usr/lib/"$program"/
Chris@612 39 done
Chris@612 40
Chris@612 41 ldd /usr/lib/x86_64-linux-gnu/libpulse.so.0 || true
Chris@612 42
Chris@612 43 add_dependencies() {
Chris@612 44
Chris@612 45 local binary="$1"
Chris@612 46
Chris@612 47 echo "ldd $binary yields:"
Chris@612 48 ldd "$binary"
Chris@612 49
Chris@612 50 for lib in $(ldd "$binary" | grep '=> [^ ]*/lib/' | \
Chris@612 51 sed 's/^.*=> //' | sed 's/ .*$//'); do
Chris@612 52
Chris@612 53 base=$(basename "$lib")
Chris@612 54 if grep -v '^#' sv-dependency-builds/linux/appimage/excludelist |
Chris@612 55 grep -q "^$base$" ; then
Chris@612 56 echo "excluding: $lib"
Chris@612 57 continue
Chris@612 58 fi
Chris@612 59
Chris@612 60 target="$targetdir/usr/lib/$(basename $lib)"
Chris@612 61
Chris@612 62 mkdir -p "$(dirname $target)"
Chris@612 63
Chris@612 64 if [ ! -f "$target" ]; then
Chris@612 65
Chris@612 66 cp -Lv "$lib" "$target"
Chris@612 67 chmod +x "$target"
Chris@612 68
Chris@612 69 add_dependencies "$lib"
Chris@612 70
Chris@612 71 fi
Chris@612 72 done
Chris@612 73 }
Chris@612 74
Chris@612 75 add_dependencies "$program"
Chris@612 76
Chris@612 77 for p in $plugins ; do
Chris@612 78 add_dependencies "$p.so"
Chris@612 79 done
Chris@612 80
Chris@612 81 qtplugins="gif icns ico jpeg tga tiff wbmp webp cocoa minimal offscreen xcb"
Chris@612 82 qtlibdirs="/usr/lib/x86_64-linux-gnu/qt5 /usr/lib/x86_64-linux-gnu/qt /usr/lib/qt5 /usr/lib/qt"
Chris@612 83
Chris@612 84 QTDIR=${QTDIR:-}
Chris@612 85 if [ -n "$QTDIR" ]; then
Chris@612 86 qtlibdirs="$QTDIR $qtlibdirs"
Chris@612 87 fi
Chris@612 88
Chris@612 89 for plug in $qtplugins; do
Chris@612 90 for libdir in $qtlibdirs; do
Chris@612 91 lib=$(find $libdir/plugins -name libq$plug.so -print 2>/dev/null || true)
Chris@612 92 if [ -n "$lib" ]; then
Chris@612 93 if [ -f "$lib" ]; then
Chris@612 94 subdir=$(basename $(dirname $lib))
Chris@612 95 if [ t"$subdir" = t"plugins" ]; then
Chris@612 96 subdir=""
Chris@612 97 fi
Chris@612 98 target="$targetdir/usr/lib/qt5/plugins/$subdir/$(basename $lib)"
Chris@612 99 mkdir -p "$(dirname $target)"
Chris@612 100 cp -v "$lib" "$target"
Chris@612 101 chmod +x "$target"
Chris@612 102 add_dependencies "$lib"
Chris@612 103 break
Chris@612 104 fi
Chris@612 105 fi
Chris@612 106 done
Chris@612 107 done
Chris@612 108
Chris@612 109 cp "$program.desktop" "$targetdir/"
Chris@612 110
Chris@617 111 cp "icons/$program-icon.svg" "$targetdir/$program-icon.svg"
Chris@612 112
Chris@612 113 cp "deploy/linux/AppRun" "$targetdir/"
Chris@612 114
Chris@612 115 chmod +x "$targetdir/AppRun"
Chris@612 116
Chris@612 117 # Do this with a separate extraction step, so as to make it work even
Chris@612 118 # in situations where FUSE is unavailable like in a Docker container
Chris@612 119 export ARCH=x86_64
Chris@612 120 sv-dependency-builds/linux/appimage/appimagetool-x86_64.AppImage --appimage-extract
Chris@612 121 ./squashfs-root/AppRun "$targetdir" "Tony-$version-x86_64.AppImage"
Chris@612 122