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

# Slackware build script for ex-vi

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

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

# 20160726 bkw: build 3
# parallel make (-jN where N > 1) fails on Slack 14.2, add -j1

# 20150331 bkw: build 2
# Increase TUBE* constants in config.h to allow for larger terminals.

# vi has hardcoded terminal size limits of 160 columns and 100 lines.
# These days it's not unusual to have a 1920x1080 framenbuffer with 8x16
# console font, for 240x67 characters. Increase limits here. Doing so uses
# TUBESIZE bytes of memory at startup, and another TUBESIZE bytes every
# time you switch from ex mode to visual mode, so let's not get too crazy
# with the cheez whiz. The real problem is TUBECOLS (the width): if the
# terminal exceeds this, you get 'Terminal too wide' and are stuck in ex
# mode. Exceeding TUBELINES just means vi ignores the extra lines at the
# bottom of the terminal.

# Default to 320x200, which would be enough for a 8x16 console font on a
# WQXGA 2560x1600 display, or a 2/3-width full-height X terminal on 4K
# UHDTV (3840x2160). If I don't make this configurable, someone will
# need it to be. So:
TUBECOLS=${TUBECOLS:-320}
TUBELINES=${TUBELINES:-200}

# We now return you to your regularly scheduled programming:
cd $(dirname $0) ; CWD=$(pwd)

PRGNAM=ex-vi
VERSION=${VERSION:-050325}
BUILD=${BUILD:-3}
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

TARNAME=ex

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $TARNAME-$VERSION
tar xvf $CWD/$TARNAME-$VERSION.tar.bz2
cd $TARNAME-$VERSION
chown -R root:root .
find -L . \
 \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
 -o -perm 511 \) -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
 -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;

# Don't install the binary with the sticky bit set. It doesn't do anything
# on Linux, and might set off alarm bells.
sed -i 's,-m 1755,-m 755,' Makefile

# Apologies for the fugly sed code here. It works, though.
sed -i -e "/^#define/s,\\(TUBESIZE *\\).*$,\\1 $(( TUBECOLS * TUBELINES ))," \
       -e "/^#define/s,\\(TUBECOLS *\\).*$,\\1 $TUBECOLS," \
       -e "/^#define/s,\\(TUBELINES *\\).*$,\\1 $TUBELINES," \
       config.h

# To avoid conflicts with Slackware's elvis and/or vim, we install to /opt and
# include a login script to set PATH and MANPATH.
make -j1 all install \
  RPMCFLAGS="$SLKCFLAGS" \
  MANDIR=/opt/$PRGNAM/man \
  PREFIX=/opt/$PRGNAM \
  INSTALL=install \
  DESTDIR=$PKG

# binary already stripped, yay

find $PKG/opt/$PRGNAM/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/opt/$PRGNAM/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done

mkdir -p $PKG/etc/profile.d
install -m0755 -oroot -groot $CWD/$PRGNAM.sh.new $PKG/etc/profile.d
install -m0755 -oroot -groot $CWD/$PRGNAM.csh.new $PKG/etc/profile.d

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a Changes LICENSE README TODO $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/README_Slackware.txt > $PKG/usr/doc/$PRGNAM-$VERSION/README_Slackware.txt
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