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

# Slackware build script for inform

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

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

# 20201104 bkw: updated for 6.34_6.12.4. In case anyone's wondering
# why I use a self-hosted URL for the source, it's because upstream
# moves the old source immediately when a new release is made. Also
# moved the binary to /usr/games and the man page to section 6.

# 20191216 bkw: updated for 6.34_6.12.2. The secondary version number
# is the inform6 library version. This script can no longer build the
# old 6.32.1 version, but it should be fine for future releases.

# The old 6.32.1 release shipped with a lot more include
# files. Upstream removed a lot of them because they were either buggy
# or license-incompatible. If you're trying to compile something that
# needs any of these old includes, please let me know. If there's enough
# demand, I'll dig up the old includes and re-add them to the package.

PRGNAM=inform
VERSION=${VERSION:-6.34_6.12.4_1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}

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

CWD=$(pwd)
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

MANVER="${MANVER:-4}"
MANUAL=designers_manual_${MANVER}.zip
TARVER="${VERSION//_/-}"
DOCDIR=/usr/doc/$PRGNAM-$VERSION
PKGDOC=$PKG/$DOCDIR

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

# 20201104 bkw: Since inform is for game purposes, install the binary
# to /usr/games, and its man page to section 6.
sed '1s/"1"/"6"/' $PRGNAM.1 > $PRGNAM.6

# 20201105 bkw: Minor fixes to Makefile so parallel builds work.
patch -p1 < $CWD/parallel_make.diff

# 20201104 bkw: Don't write to real $PREFIX! Just disable the CASETEST
# stuff, since we're including our own set of symlinks.
sed -i '/touch.*PREFIX/,+2d' Makefile

# 20201104 bkw: upstream now supports DESTDIR again.
make install-strip \
     OPTS="$SLKCFLAGS" \
     BINDIR=/usr/games \
     MANDIR=/usr/man/man6 \
     MANPAGE=$PRGNAM.6 \
     PREFIX=/usr \
     TUTORDIR=$DOCDIR/tutor \
     DEMODIR=$DOCDIR/demos \
     DESTDIR=$PKG

gzip $PKG/usr/man/man?/*.?

# 20201104 bkw: the binary got moved, be kind and provide a symlink
mkdir -p $PKG/usr/bin
ln -s ../games/$PRGNAM $PKG/usr/bin/$PRGNAM

# Inform started life (and is still used primarily) on OSes
# with case-insensitive filenames, meaning that a lot of inform
# source refers to e.g. VerbLib or even VERBLIB (with or without
# the .h at the end, which could also be capitalized as .H). The
# Makefile can create a few symlinks to support this, but let's
# be more all-inclusive. We got 8 .h files, and end up with 70+
# symlinks. There's no kill like overkill!
( cd $PKG/usr/share/$PRGNAM/lib
  for file in *.h; do
    name=${file%%.*}
    #           Name.h     NAME.h
    for link in ${name^}.h ${name^^}.h; do
      ln -s $file $link
    done
  done

  # MixedCase isn't standardized, these are guesses. Some are pretty
  # unlikely, but they don't cost much. Better to have and not need,
  # than to need and not have.
  for link in VerbLib VerbLIB verbLib verbLIB \
              InFix InFIX inFix inFIX \
              InfGlk InfGLK infGlk infGLK \
              LinkLpa LinkLPA linkLpa linkLPA
  do
    ln -s ${link,,}.h $link.h
  done

  # Any of the above might appear with .H. Use readlink so all the
  # variant names link to the real file (no symlinks to symlinks).
  # This might be overcautious: the example code all just says
  # e.g. 'Include "Parser"', without the .h.
  for file in *.h; do
    ln -s $( readlink $file ) ${file%%.*}.H
  done
)

# Upstream removed the manual for licensing reasons. It belongs in the
# binary package IMO.
mkdir -p $PKGDOC/manual
( cd $PKGDOC/manual
  unzip $CWD/$MANUAL
  # manual has no subdirs
  chmod 644 *
  chown root.root *
)

# Inform Beginners' Guide, required reading.
cat $CWD/IBG.pdf > $PKGDOC/inform_beginners_guide.pdf

mkdir -p $PKGDOC/lib
for i in ChangeLog README.txt voices_and_tenses.txt; do
  ln -s ../../../share/$PRGNAM/lib/$i $PKGDOC/lib
done

# ARTISTIC and COPYING are redundant: src/licence.txt includes the
# full text of both.
cp -a AUTHORS NEWS README* src/*.txt src/*.html docs/* $PKGDOC
cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$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:-tgz}