summaryrefslogtreecommitdiffstats
path: root/games/oblige/oblige.SlackBuild
blob: e9deb08bd008835f42520a57094e48d18e5f1c5e (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 oblige

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

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

# 20211020 bkw: BUILD=2
# - fix -current build.
# - binary in /usr/games.
# - new-style icons.

# 20171220 bkw:
# - update for 7.70. Upstream calls this the final release :(

# 20170817 bkw:
# - update for 7.666. Sadly this might be the last update, upstream is
#   tired of working on oblige :(

# 20161016 bkw:
# - update for 7.50
# - get rid of CRLF endings in docs
# - allow script to build both 6.20 and 7.50, see README for why
# - reword short description in slack-desc (was too vague)

# 20150510 bkw:
# - version bump to 6.20
# - use upstream's .desktop and icon
# - get rid of hacked-up Makefile.unixy, use upstream's Makefile
# - convert POD man page source to RST

# 20140916 bkw: bump BUILD to 2.
# add man page.

# 20140827 bkw: version bump, reset BUILD to 1.
# oblige 6.10 is nice, but it *only* supports the Doom games, so I'll
# add an oblige-legacy4 build for the old version.

# 20140213 bkw: bump BUILD to 2.
# Makefile.unixy updated so it installs data/doom[12]_boss (thanks to Black
# Rider for the bug report). Also get rid of +x permissions on the data files
# in /usr/share.

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

PRGNAM=oblige
VERSION=${VERSION:-7.70}
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

SRCVER=${VERSION//./}
SRCNAM="Oblige" # grrrr!

if [ ! -e $CWD/swap.$VERSION.diff.gz ]; then
  supported="$( echo $( /bin/ls $CWD/*.diff.gz | sed 's,.*/,,' | cut -d. -f2,3 ) )"
  cat <<EOF

*** Unsupported version of oblige: $VERSION.
*** Supported versions are: $supported.
*** The build will probably fail. Press ^C to abort, or wait
*** 10 seconds to continue.

EOF
  sleep 10
fi

rm -rf $PKG
mkdir -p $TMP $PKG/usr/bin $PKG/usr/share/$PRGNAM $OUTPUT
cd $TMP
rm -rf ${SRCNAM}-${VERSION}-source

# script supports 6.x and 7.x. author switched from .tar.gz to .zip
# for 7.x, so check for both.
if [ -e $CWD/$PRGNAM-$SRCVER-source.zip ]; then
  unzip $CWD/$PRGNAM-$SRCVER-source.zip
else
  tar xvf $CWD/$PRGNAM-$SRCVER-source.tar.gz
fi

cd ${SRCNAM}-${VERSION}-source
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 {} \+

# N.B. these diffs *must* be gzipped, they contain a mix of \n and
# \r\n line endings, git would strip the \r's.
zcat $CWD/swap.$VERSION.diff.gz | patch -p1

# 'make install' would install the .desktop and icon to /usr, not PREFIX.
sed -i '/xdg-/d' Makefile

# if there's no prefabs/ dir, don't try to install it. doing it this
# way would allow this script to still build oblige 7.666, if needed.
if [ ! -d prefabs ]; then
  sed -i '/\/prefabs/d' Makefile
fi

make PREFIX=/usr OPTIMISE="$SLKCFLAGS"
make install PREFIX=$PKG/usr
mv $PKG/usr/bin $PKG/usr/games

# man page written for this build (based on --help output)
mkdir -p $PKG/usr/man/man6
gzip -9c < $CWD/$PRGNAM.6 > $PKG/usr/man/man6/$PRGNAM.6.gz

# Starting with 6.20, upstream includes a .desktop and icon.
# The icon's fugly though, see below.
mkdir -p $PKG/usr/share/pixmaps $PKG/usr/share/applications
sed "s,Exec=,Exec=/usr/games/," \
  < misc/$PRGNAM.desktop \
  > $PKG/usr/share/applications/$PRGNAM.desktop

# icons made from upstream's icon, by turning the background transparent.
for i in $CWD/icons/*.png; do
  px=$( basename $i | cut -d. -f1 )
  size=${px}x${px}
  dir=$PKG/usr/share/icons/hicolor/$size/apps
  mkdir -p $dir
  cat $i > $dir/$PRGNAM.png
done

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

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
rm -f INSTALL.txt # don't need compile instruction in bin package
sed -i 's,\r,,' *.txt
cp -a *.txt $PKG/usr/doc/$PRGNAM-$VERSION
# 6.x and 7.50 have extra docs, 7.666 doesn't:
if [ -d doc ]; then
  sed -i 's,\r,,' doc/*.txt
  cp doc/*.txt $PKG/usr/doc/$PRGNAM-$VERSION
fi
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

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