summaryrefslogtreecommitdiffstats
path: root/source/xap/xaos/xaos.SlackBuild
blob: 7f901ed2eb60c274a62a295b23b28029d50af5a6 (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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#!/bin/bash

# Copyright 2010 B. Watson (yalhcru@gmail.com)
# Copyright 2010, 2015, 2018  Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Slackware build script for xaos

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

# A few notes:
#
# Package really wants to use its own CFLAGS (even checks for them
# in the configure script). Let it...
# 
# SFFE is the user formula evaluator, which allows users to define their
# own fractals. On x86 platforms, an assembly-language implementation of
# SFFE is used. On non-x86 platforms, SFFE requires a library called GSL
# (GNU Scientific Library, available from SBo).
# 
# xaos is still interesting and useful without SFFE support (most users
# probably don't know/care about the math, so they'll never use the SFFE
# stuff anyway), so we'll just disable it on non-x86 platforms by default.
# 
# If you really want to use it, set USE_GSL=yes in the environment before
# running this script. There's no need to use GSL on x86 platforms, since
# the asm code is (or should be) faster, but the option is there if you
# want to use it anyway.
# 
# Multilib users also have the option of building on a 32-bit Slackware system
# (or in a chroot) and the resulting package will run just fine on 64-bit.
#
# If the preceding didn't make any sense, here's the bottom line:
# 
# - Regular Slackware (x86) users can just run this script and ignore the junk
#   above.
#
# - Everyone else (Slamd64, Bluewhite64, Slackware64, ???) can just
#   run this script and probably never notice the missing functionality.
#
# - If you're not on x86, but you want the formula evaluator, install GSL
#   and then run this script with USE_GSL=yes in the environment.

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

PKGNAM=xaos
SRCNAM=XaoS-release
VERSION=${VERSION:-$(echo $SRCNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}

# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    # might as well use i686 since it won't listen to our CFLAGS anyway
    i?86) ARCH=i686 ;;
    arm*) ARCH=arm ;;
    # Unless $ARCH is already set, use uname -m for all other archs:
       *) 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 "$PKGNAM-$VERSION-$ARCH-$BUILD.txz"
  exit 0
fi

TMP=${TMP:-/tmp}
PKG=$TMP/package-$PKGNAM
OUTPUT=${OUTPUT:-/tmp}

USE_GSL=${USE_GSL:-no}

if [ "$USE_GSL" = "yes" ]; then
	GSL_OPT="yes"
	SFFE_OPT="yes"
elif [ "$ARCH" = "i486" -o "$ARCH" = "i686" ]; then
	GSL_OPT="no"
	SFFE_OPT="yes"
else
	GSL_OPT="no"
	SFFE_OPT="no"
fi

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $SRCNAM-$VERSION
tar xvf $CWD/$SRCNAM-$VERSION.tar.?z || exit 1
cd $SRCNAM-$VERSION || exit 1

chown -R root:root .
chmod -R a-s,u+w,go+r-w .

./configure \
  --prefix=/usr \
  --docdir=/usr/doc/$PKGNAM-$VERSION \
  --infodir=/usr/info \
  --mandir=/usr/man \
  --with-gsl=$GSL_OPT \
  --with-sffe=$SFFE_OPT \
  --with-pthread=yes \
  --build=$ARCH-slackware-linux

make || exit 1
# binary already stripped, yay!
make install DESTDIR=$PKG || exit 1

# Replace bogus manpage:
zcat $CWD/xaos.6.gz > $PKG/usr/man/man6/xaos.6

gzip -9 $PKG/usr/man/man6/xaos.6
rm -f $PKG/usr/info/dir
gzip -9 $PKG/usr/info/*.info*

mkdir -p $PKG/usr/doc
mv $PKG/usr/share/XaoS/doc $PKG/usr/doc/xaos-$VERSION
( cd $PKG/usr/share/XaoS ; ln -sf ../../doc/xaos-$VERSION doc )

mkdir -p $PKG/usr/share/applications
cat $CWD/xaos.desktop > $PKG/usr/share/applications/xaos.desktop

mkdir -p $PKG/usr/share/pixmaps
cat $CWD/xaos.png > $PKG/usr/share/pixmaps/xaos.png

chmod 644 $PKG/usr/doc/xaos-$VERSION/*
rm -f $PKG/usr/doc/xaos-$VERSION/ChangeLog.old
cp -a \
  AUTHORS COPYING* INSTALL NEWS README* TODO \
  $PKG/usr/doc/xaos-$VERSION

# If there's a ChangeLog, installing at least part of the recent history
# is useful, but don't let it get totally out of control:
if [ -r ChangeLog ]; then
  DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
  cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
  touch -r ChangeLog $DOCSDIR/ChangeLog
fi

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

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PKGNAM-$VERSION-$ARCH-$BUILD.txz