summaryrefslogtreecommitdiffstats
path: root/accessibility/svox/svox.SlackBuild
blob: 70de24a97f570ba991a9b32e52339e32ff418aaf (plain) (blame)
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
#!/bin/bash

# Slackware build script for svox

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

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

# This is heavily based on Debian's packaging, see:
# https://packages.debian.org/source/sid/svox

# It's in the Debian non-free repo on a technicality: svox is free
# software released under the Apache-2.0 license, but the sources
# for the compiled voices (/usr/share/pico/lang/*.bin) are missing,
# so it doesn't quite comply with its own license.

# Notes to self:

# - The _8 in the version number is the Debian build number, keep it
#   in sync with future Debian updates.
# - "Upstream" here is Debian, not Android. Debian has svox's homepage
#   listed as "www.android.com", it seems more useful to set HOMEPAGE
#   to the Debian page for svox.

# 20210802 bkw: BUILD=2
# - update pico2audio script to support multiple words without quotes.
# - add man page for pico2audio.
# - update pico2wave man page.
# - add svox man page symlink, in case someone remembers the name of the
#   package but not the name of the binary.

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

PRGNAM=svox
VERSION=${VERSION:-1.0+git20130326_8}
BUILD=${BUILD:-2}
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

# Split up and recombine Debian's version number, we can't have a - in
# a Slackware version number. And using the -8 for BUILD is a bad idea
# (thanks for pointing that out, idlemoor).
DEBVER="$( echo $VERSION | cut -d_ -f1 )"
DEBBLD="$( echo $VERSION | cut -d_ -f2 )"
PRGVER=${PRGNAM}_$DEBVER

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$DEBVER
tar xvf $CWD/$PRGVER.orig.tar.gz
cd $PRGNAM-$DEBVER
tar xvf $CWD/$PRGVER-$DEBBLD.debian.tar.xz
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 {} \+

# Apply all of Debian's patches. Many thanks to the Debian maintainers
# for all the work that went into these patches.
for i in $( cat debian/patches/series ); do
  # use -e here to skip commented-out patches in 'series'.
  [ -e debian/patches/$i ] && patch --verbose -p1 < debian/patches/$i
done

# Stop pico2wave from segfaulting on exit, when given words on the
# command line. The code presumably works on Debian, maybe because
# of differences in the popt library, or in glibc itself?
patch --verbose -p1 < $CWD/dont_try_to_free_argv.diff

cd pico
autoreconf -if

CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
  --enable-shared \
  --disable-static \
  --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

# We don't need this:
rm $PKG/usr/lib$LIBDIRSUFFIX/*.la

# It drives me nuts that pico2wave can't play to my speakers, so
# I wrote a script:
install -m0755 -oroot -groot $CWD/pico2audio $PKG/usr/bin

# The original Debian man page was generated from the --help output. I've
# expanded it to include a proper description, examples, a list of
# allowed languages for the -l option, and a few other goodies.
# 20210802 bkw: Added a man page for the pico2audio script, too.
# Please don't add pico2audio.rst to the package, and please don't
# remove it from the repo because it's not in the package: it's the
# source for pico2audio.1.
mkdir -p $PKG/usr/man/man1
gzip -9c < $CWD/pico2wave.1 > $PKG/usr/man/man1/pico2wave.1.gz
ln -s pico2wave.1.gz $PKG/usr/man/man1/$PRGNAM.1.gz
gzip -9c < $CWD/pico2audio.1 > $PKG/usr/man/man1/pico2audio.1.gz

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cat ../debian/copyright > $PKG/usr/doc/$PRGNAM-$VERSION/copyright
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

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

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