summaryrefslogtreecommitdiffstats
path: root/audio/alsa-tools/alsa-tools.SlackBuild
blob: 7934630f7cc394a3c3a7d829d8f74d39b9f4bcdf (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
188
189
190
191
192
193
194
195
196
197
#!/bin/sh

# Slackware build script for alsa-tools

# Written by B. Watson (yalhcru@gmail.com)

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

# I am *not* going to create separate packages for each of the individual
# tools, as some distros do. They're small enough that it's worth the
# tiny bit of extra disk space for unused tools, to avoid the annoyances
# of having to write and test 10 or 12 packages. For the same reason,
# the firmware is being included in the package as well.
# *** I agree.  --rworkman   :-)

# 20140219 bkw: fix .desktop files so they validate

# 20140823 bkw:
# - Update for 1.0.28
# - Add usbcore.autosuspend=-1 to tascam howto

# 20150505 bkw: update for 1.0.29
# 20160109 rlw: update for 1.1.0

PRGNAM=alsa-tools
VERSION=${VERSION:-1.1.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}

FIRMVER=${FIRMVER:-1.0.29}

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

CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

if [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -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

FIRMWARE=alsa-firmware

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT

# first, alsa-tools itself... which is really a bunch of separate packages
# that happen to be tarred up together.
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
 \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
 -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
 -exec chmod 644 {} \;

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION

# allow disabling all the GUI apps
if [ "${GUI:-yes}" != "yes" ]; then
  QT3=no
  FLTK=no
  rm -rf echomixer envy24control hdajackretask rmedigicontrol
fi

# qlo10k1 depends on Qt3, which no longer ships with Slackware.
# This supports the SBo qt3 build. It's not enough to source qt.sh,
# the qt3 bin directories need to come first in $PATH too.
# If you got your Qt3 from some other source, you may have to
# fiddle with QTDIR and PATH yourself.
if [ -e /opt/kde3/lib$LIBDIRSUFFIX/qt3 -a "${QT3:-yes}" = "yes" ]; then
  source /etc/profile.d/qt.sh
  export PATH=/opt/kde3/lib$LIBDIRSUFFIX/qt3/bin:/opt/kde3/bin:$PATH
else
  rm -rf qlo10k1
fi

# hdspconf and hdspmixer depend on fltk. Don't build them if disabled or
# not installed.
[ -e /usr/bin/fltk-config -a "${FLTK:-yes}" = "yes" ] || rm -rf hdspconf hdspmixer

# one loop to build them all. The -include stddef.h fixes qlo10k1 'ptrdiff_t doesn't
# name a type' errors, and doesn't hurt anything else.
for subdir in $( find . -name configure | sed -e 's,^\./,,' -e 's,/configure,,' ); do
  cd $subdir

  LDFLAGS="-L/usr/lib$LIBDIRSUFFIX" \
  CFLAGS="$SLKCFLAGS" \
  CXXFLAGS="$SLKCFLAGS -include stddef.h" \
  ./configure \
    --prefix=/usr \
    --libdir=/usr/lib${LIBDIRSUFFIX} \
    --sysconfdir=/etc \
    --localstatedir=/var \
    --mandir=/usr/man \
    --docdir=/usr/doc/$PRGNAM-$VERSION \
    --build=$ARCH-slackware-linux

  make
  make install-strip DESTDIR=$PKG

  for doc in README AUTHORS COPYING ChangeLog NEWS TODO COPYING.LIB; do
    [ -s "$doc" ] && cat "$doc" > $PKG/usr/doc/$PRGNAM-$VERSION/$doc.$( basename $subdir ).txt
  done
  cd -
done

# second, build the firmware
rm -rf $FIRMWARE-$FIRMVER
tar xvf $CWD/$FIRMWARE-$FIRMVER.tar.bz2
cd $FIRMWARE-$FIRMVER
chown -R root:root .
find -L . \
 \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
 -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
 -exec chmod 644 {} \;

CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
 --prefix=/usr \
 --libdir=/usr/lib${LIBDIRSUFFIX} \
 --sysconfdir=/etc \
 --localstatedir=/var \
 --mandir=/usr/man \
 --docdir=/usr/doc/$PRGNAM-$VERSION \
 --with-hotplug-dir=/lib/firmware \
 --build=$ARCH-slackware-linux

make
make install-strip DESTDIR=$PKG

# hdspmixer.desktop and hdspconf.desktop fail desktop-file-validate.
# We'll leave the deprecation warning for FilePattern, as it's just a
# warning, and FilePattern might still be useful.
[ -e $PKG/usr/share/applications/hdspmixer.desktop ] &&
sed -i \
  -e '/^Encoding/d' \
  -e '/^FilePattern/s,$,;,' \
  -e '/^Icon/s,\.png *$,,' \
  -e '/^Categories/s,Application;,,' \
  $PKG/usr/share/applications/hdspmixer.desktop \
  $PKG/usr/share/applications/hdspconf.desktop

# Niels Horn pointed out that some of the firmware shipped with this
# package conflicts with Slackware's kernel-firmware package. The files
# are identical, so just leave them out of this build.
( cd $PKG/lib/firmware ; rm -rf ess korg sb16 yamaha )

# remove the hotplug scripts, since Slackware 13.37 & up doesn't use hotplug.
# Instead, they've been converted to udev rules.
rm -rf $PKG/etc/hotplug

mkdir -p $PKG/lib/udev/rules.d
cat $CWD/99-tascam.rules > $PKG/lib/udev/rules.d/99-tascam.rules

cat COPYING > $PKG/usr/doc/$PRGNAM-$VERSION/COPYING.firmware.txt
cat README > $PKG/usr/doc/$PRGNAM-$VERSION/README.firmware.txt

# I wrote this doc when I got my US-122, might as well include it in
# case it helps anyone.
cat $CWD/tascam-us122-HOWTO > $PKG/usr/doc/$PRGNAM-$VERSION/tascam-us122-HOWTO

cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh

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