Mercurial > hg > sonic-visualiser
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 |