summaryrefslogtreecommitdiffstats
path: root/audio/sonic-visualiser/sonic-visualiser.SlackBuild
blob: 61524bf890bf09997d25ad7f8154373100b80cad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
#!/bin/bash

# Slackware build script for sonic-visualiser

# Written by B. Watson (urchlay@slackware.uk)

# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.

# 20230713 bkw: update for 4.5.2.
# 20230112 bkw: update for 4.5.1.
# 20211207 bkw: update for 4.4.
# - liblo is now a hard dep.
# - jack is a hard dep again.
# - get rid of 10+ year outdated Debian man pages, write an up-to-date one.
#   unfortunately I do not speak French, so the new man page is English-only.
# - upstream switched to meson, can no longer build older versions with
#   this script.

# 20201104 bkw: update for 4.2.
# 20191212 bkw:
# - Update for 4.0.1.
# - New deps: libfishsound capnproto opusfile.
# - Removed JACK as a hard dep.
# - Have slack-desc tell the user what optional deps are built-in.
# - Annoying stuff relating to the test suite.
# - If necessary, source the qt5 profile script.
# - Install French man page.
# - Fix icon reference in .desktop.
# - It looks like the segfault-on-exit problem was caused by an outdated
#   version of qt5. It's gone away with qt5-5.9.8.

# 20181217 bkw:
# - Update for 3.2. This was left stale for a long time due to
#   problems with SBo's old qt5, which has finally been updated,
#   thanks to dive.
# - Get rid of static capnproto, no longer needed (thank the ghods).
# - PulseAudio now works, update README accordingly.
# - Yes, I'm aware that it's segfaulting on exit, but it won't dump
#   core (even though I have coredumps enabled) so I can't easily
#   diagnose it.

# 20170312 bkw:
# - update for 3.0.1
# - parallel build seems OK, remove -j1 (again)
# - 3.0.1 requires a bleeding-edge capnproto (newer than the latest
#   release) so build a static one to link with. When capnproto.SlackBuild
#   gets updated past 0.5.3, this stuff can go away. The static capnproto
#   is used whether or not capnproto is installed on the system, and it's
#   not installed as part of the sonic-visualiser package.
# - add note to README about pulse and portaudio failures. I don't know
#   what's wrong yet, but jack-audio-connection-kit remains a hard dep
#   unless/until I figure it out.
# - upstream fixed the .desktop, remove my code that fixed the old one.
# - stop the unit tests from spamming /root

# 20160819 bkw:
# - parallel build is still broken, revert to -j1

# 20160806 bkw:
# - updated to 2.5, which means adding a qt5 dep.
# - fix parallel build.
# - according to INSTALL.txt, jack-audio-connection-kit is optional,
#   so I was going to remove it from REQUIRES. I tried building without it,
#   but the build failed, so it remains a hard dep for now.

# 20140913 bkw:
# - finally updated (from 1.9 to 2.3)
# - add man page
# - use png icon rather than svg
# - add MIME types for desktop integration
# - add realtime capabilities

cd $(dirname $0) ; CWD=$(pwd)

PRGNAM=sonic-visualiser
VERSION=${VERSION:-4.5.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i586 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
fi

if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
  echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
  exit 0
fi

TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

if [ "$ARCH" = "i586" ]; then
  SLKCFLAGS="-O2 -march=i586 -mtune=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
  LIBDIRSUFFIX="64"
else
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
fi

set -e

rm -rf $PKG $TMP/$PRGNAM
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L .  -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
        \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+

# 20211207 bkw: upstream switched from autotools to meson/ninja. Also,
# the test suite is no longer run by default, so all the extra code here
# that was needed to make the tests pass, is gone. And, there's now a
# functional 'install' target.
# According to COMPILE_linux.md, mlton is required. But building without
# it works fine and produces a binary that works fine...
mkdir build
cd build
  CFLAGS="$SLKCFLAGS" \
  CXXFLAGS="$SLKCFLAGS" \
  meson .. \
    --buildtype=release \
    --infodir=/usr/info \
    --libdir=/usr/lib${LIBDIRSUFFIX} \
    --localstatedir=/var \
    --mandir=/usr/man \
    --prefix=/usr \
    --sysconfdir=/etc \
    -Dstrip=true
  "${NINJA:=ninja}"
  DESTDIR=$PKG $NINJA install
cd ..

# binaries already stripped, .desktop already installed.

for i in icons/sv-*x*.png; do
  size="$( basename $i | cut -d- -f2 | cut -d. -f1 )"
  dir=$PKG/usr/share/icons/hicolor/$size/apps
  mkdir -p $dir
  cp -a $i $dir/$PRGNAM.png
done

mkdir -p $PKG/usr/share/pixmaps
ln -s ../icons/hicolor/48x48/apps/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png

# man page written by SlackBuild author.
mkdir -p $PKG/usr/man/man1
gzip -9c < $CWD/$PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz

# define MIME types to associate *.sv and *.svl
mkdir -p $PKG/usr/share/mime/packages
cat $CWD/$PRGNAM.xml > $PKG/usr/share/mime/packages/$PRGNAM.xml

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a CHANGELOG CITATION COPYING README* $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

WITH_PA=WITHOUT
objdump -p $PKG/usr/bin/$PRGNAM | grep -q 'NEEDED.*libportaudio' && WITH_PA=WITH

mkdir -p $PKG/install
sed "s,@WITH_PA@,$WITH_PA," $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh

# Only add capability stuff if not disabled:
if [ "${SETCAP:-yes}" = "yes" ]; then
  cat $CWD/setcap.sh >> $PKG/install/doinst.sh
  # Only allow execution by audio group
  chown root:audio $PKG/usr/bin/$PRGNAM
  chmod 0750 $PKG/usr/bin/$PRGNAM
fi

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE