comparison deploy/linux/deploy-appimage.sh @ 1907:82a8b639c9ec

Merge from branch appimage
author Chris Cannam
date Thu, 28 Jun 2018 21:24:42 +0100
parents 9bd1dea5f412
children abddb04d2bf3
comparison
equal deleted inserted replaced
1900:a3cd06d89a45 1907:82a8b639c9ec
1 #!/bin/bash
2
3 set -eu
4
5 program=sonic-visualiser
6 checker=vamp-plugin-load-checker
7 piper=piper-vamp-simple-server
8
9 get_id() {
10 if [ -d .hg ]; then
11 hg id | sed 's/[+ ].*$//'
12 elif [ -d .git ]; then
13 git rev-parse --short HEAD
14 else
15 echo "WARNING: can't figure out revision from VCS metadata" 1>&2
16 echo "unknown"
17 fi
18 }
19
20 version=$(get_id)
21
22 targetdir="${program}.AppDir"
23
24 echo "Target dir is $targetdir"
25
26 if [ -d "$targetdir" ]; then
27 echo "Target directory exists, not overwriting"
28 exit
29 fi
30
31 mkdir "$targetdir"
32
33 mkdir -p "$targetdir"/usr/bin
34 mkdir -p "$targetdir"/usr/lib
35
36 cp "$program" "$checker" "$piper" "$targetdir"/usr/bin/
37
38 ldd /usr/lib/x86_64-linux-gnu/libpulse.so.0 || true
39
40 add_dependencies() {
41
42 local binary="$1"
43
44 for lib in $(ldd "$binary" | egrep '=> (/usr)?(/local)?/lib/' | \
45 sed 's/^.*=> //' | sed 's/ .*$//'); do
46
47 base=$(basename "$lib")
48 if grep -v '^#' sv-dependency-builds/linux/appimage/excludelist |
49 grep -q "^$base$" ; then
50 # echo "excluding: $lib"
51 continue
52 fi
53
54 mkdir -p "$targetdir/$(dirname $lib)"
55
56 if [ ! -f "$targetdir/$lib" ]; then
57
58 cp -Lv "$lib" "$targetdir/$lib"
59 chmod +x "$targetdir/$lib"
60
61 # copy e.g. /usr/lib/pulseaudio/libpulsecommon-*.so up a
62 # level to something in the load path
63 last_element=$(basename $(dirname "$lib"))
64 case "$last_element" in
65 lib) ;;
66 *-gnu) ;;
67 *) cp -v "$targetdir/$lib" "$targetdir/$(dirname $(dirname $lib))"
68 esac
69
70 add_dependencies "$lib"
71
72 fi
73 done
74 }
75
76 add_dependencies "$program"
77
78 cp -v "$targetdir/usr/local/lib/"* "$targetdir/usr/lib/"
79
80 qtplugins="gif icns ico jpeg tga tiff wbmp webp cocoa minimal offscreen xcb"
81 qtlibdirs="/usr/lib/x86_64-linux-gnu/qt5 /usr/lib/x86_64-linux-gnu/qt /usr/lib/qt5 /usr/lib/qt"
82
83 for plug in $qtplugins; do
84 for libdir in $qtlibdirs; do
85 lib=$(find $libdir/plugins -name libq$plug.so -print 2>/dev/null || true)
86 if [ -n "$lib" ]; then
87 if [ -f "$lib" ]; then
88 mkdir -p "$targetdir/$(dirname $lib)"
89 cp -v "$lib" "$targetdir/$lib"
90 chmod +x "$targetdir/$lib"
91 add_dependencies "$lib"
92 break
93 fi
94 fi
95 done
96 done
97
98 cp "$program.desktop" "$targetdir/"
99
100 cp "icons/sv-icon.svg" "$targetdir/"
101
102 cp sv-dependency-builds/linux/appimage/AppRun-x86_64 "$targetdir/AppRun"
103 chmod +x "$targetdir/AppRun"
104
105 ARCH=x86_64 sv-dependency-builds/linux/appimage/appimagetool-x86_64.AppImage "$targetdir" "SonicVisualiser-$version-x86_64.AppImage"
106