summaryrefslogtreecommitdiffstats
path: root/development/asl/asl.SlackBuild
blob: fd7d38cd3afa041a088ca2c1eae615aca6d91080 (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
#!/bin/bash

# Slackware build script for asl
# Originally written by Oleg O. Chukaev <email removed>

# Modified and currently maintained by B. Watson <yalhcru@gmail.com>.
# Original version had no license. Modified version released under the
# WTFPL. See http://www.wtfpl.net/txt/copying/ for details.

# 20210829 bkw: update for 142_bld207.
# - docs won't build on -current's texlive, use prebuilt (on 14.2).
# 20201106 bkw: update for 142_bld178.
# 20191202 bkw: update for 142_bld150.
# 20180911 bkw: update for 142_bld137.
# 20180615 bkw: update for 142_bld134.

# 20180103 bkw: update for 142_bld123. Fixes the problem where the
# docs were installed to / instead of /usr/doc/$PRGNAM-$VERSION.

# 20170926 bkw:
# - take over maintenance
# - update for 142_bld119
# - i486 => i586
# - clean up the documentation mess, add DOCTYPES with sane default
# - don't install compile instructions in /usr/doc
# - add UTF8 option (default off)
# - nitpick README and slack-desc
# - run test suite, include results in doc dir

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

PRGNAM=asl
SRCNAM=asl-current
VERSION=${VERSION:-142_bld207}
SRCVER=$(echo $VERSION | tr _ -)
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 the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
# could be useful to other scripts.
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
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $SRCNAM
tar xvf $CWD/$SRCNAM-$SRCVER.tar.?z*
cd $SRCNAM
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 {} \+

sed -e "/^CFLAGS/s,=.*,= $SLKCFLAGS," \
    -e 's,/local,,' \
    -e "s,/lib,&$LIBDIRSUFFIX," \
    -e "s,doc/.*,doc/$PRGNAM-$VERSION," \
    < Makefile.def.tmpl \
    > Makefile.def

BUILD_DOCS="${BUILD_DOCS:-no}"
[ "$BUILD_DOCS" = "no" ] && sed -i '/^all:/s, *docs,,' Makefile

# Slackware standard is still non-utf8 locales in 14.2.
UTF8="${UTF8:-no}"
[ "$UTF8" = "yes" ] && \
  sed -i 's/CHARSET_ISO8859_1/CHARSET_UTF8/' Makefile.def

# binaries are already stripped, no symlinks in man pages.
# 20201106 bkw: upstream changed PREFIX to INSTROOT, support both
# in case someone wants to build an old version.
DESTDIR=PREFIX
grep -q INSTROOT Makefile && DESTDIR=INSTROOT
make -j1 binaries install $DESTDIR=$PKG DOCPATH=""
gzip -9 $PKG/usr/man/man?/*.?

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

[ "${TESTS:-yes}" = "yes" ] && \
  make -j1 test > $PKG/usr/doc/$PRGNAM-$VERSION/test_suite.log 2>&1

# 20210829 bkw: docs won't build on -current (aka 15.0rc1). I don't
# speak TeX and don't have time to learn it, so I prebuilt the docs
# on a 14.2 box and made a tarball.
if [ "$BUILD_DOCS" = "no" ]; then
  tar xvf $CWD/$PRGNAM-doc-$VERSION.tar.xz
  install -m0644 -oroot -groot $PRGNAM-doc-$VERSION/* $PKG/usr/doc/$PRGNAM-$VERSION
else
  # Don't use 'make docs', we don't need to waste time converting the
  # same documentation into multiple formats (html, ps, pdf, plain text)
  # unless the user really wants to. Also, "make docs" followed by "make
  # install" results in a mess, the /usr/doc dir ends up containing all
  # the converted formats, plus the TeX source, plus all the temporary
  # files created during the doc build. The stuff below is more work than
  # I really wanted to do, but...

  DOCTYPES="${DOCTYPES:-html}"

  for doctype in $DOCTYPES; do
    for lang in EN DE; do
      case "$doctype" in
        html)
          make tex2html
          make -C doc_$lang as.html TEX2HTML=../tex2html
          cat doc_$lang/as.html > $PKG/usr/doc/$PRGNAM-$VERSION/as-$lang.html
          ;;
        pdf)
          make -C doc_$lang as.pdf TEX2HTML=../tex2html
          cat doc_$lang/as.pdf > $PKG/usr/doc/$PRGNAM-$VERSION/as-$lang.pdf
          ;;
        ps)
          make -C doc_$lang as.ps TEX2HTML=../tex2html
          cat doc_$lang/as.ps > $PKG/usr/doc/$PRGNAM-$VERSION/as-$lang.ps
          ;;
        txt)
          make tex2doc
          make -C doc_$lang as.doc TEX2DOC=../tex2doc
          cat doc_$lang/as.doc > $PKG/usr/doc/$PRGNAM-$VERSION/as-$lang.txt
          ;;
        *)
          echo "Unknown value for DOCTYPES, valid types are: html pdf ps txt" 1>&2
          exit 1
          ;;
      esac
    done
  done
fi

# 20191202 bkw: even after all that, I have to do this:
rm -f $PKG/usr/doc/$PRGNAM-$VERSION/*.tex

cp -a BENCHES README README.LANGS TODO changelog \
    $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

mkdir -p $PKG/install
sed -e "s,@UTF8@,$UTF8," \
    -e "s,@DOCTYPES@,$DOCTYPES," \
    $CWD/slack-desc \
    > $PKG/install/slack-desc

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