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
|
#!/bin/bash
# Slackware build script for j4-dmenu-desktop
# Written by B. Watson (yalhcru@gmail.com)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
# 20201103 bkw: update for 2.18 release
# 20191128 bkw:
# - Update for 2.17 release.
# - Upstream now includes the man page in the tarball, use that
# instead the old one that used to be here. Means this script can't
# build older versions.
# 20180112 bkw: Update for 2.16 release.
# 20170301 bkw: Update for 2.15 release, use github long-form URL.
# 20160726 bkw: Update for 2.14 release.
# 20150914 bkw: Update for 2.13 release.
# 20150512 bkw:
# - Update for 2.12 release.
# - Replace my man page with upstream's (from git).
# - Escape dashes in terminal name, in man page (MANTERM).
# - Replace no_interactive_shell.diff with sed -i.
# 20140724 bkw: updated to 20140724 snapshot.
# - Default to TERMINAL=xterm if i3-sensible-terminal not installed
# on build host. Can still set TERMINAL in env to override.
# - Fix hangs caused by using an interactive shell when there's no
# controlling terminal. Thanks to crumb on ##slackware for the
# bug report.
# 20140310 bkw: updated to 20140310 snapshot.
# - Added man page
# - Added default terminal selection
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=j4-dmenu-desktop
VERSION=${VERSION:-2.18}
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 $PRGNAM-r$VERSION
tar xvf $CWD/$PRGNAM-r$VERSION.tar.gz
cd $PRGNAM-r$VERSION
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 {} \+
# For some reason, j4-dmenu-desktop uses "bash -i -c <command>" to execute
# the user's choice. bash -i means interactive shell... which causes it to
# hang if there's no controlling terminal. No idea why upstream wanted the -i
# option in the first place, I've asked but not gotten an answer.
sed -i '/execl(shell/s|"-i", *||' src/*.hh
# For users who don't use i3, let them pick the default terminal.
# If TERMINAL not set, and i3-sensible-terminal not installed, just
# default to xterm.
if which i3-sensible-terminal &>/dev/null; then
DEFTERM="i3-sensible-terminal"
else
DEFTERM="xterm"
fi
TERMINAL="${TERMINAL:-$DEFTERM}"
MANTERM="$( echo $TERMINAL | sed 's,-,\\\\-,g' )"
echo "Using TERMINAL=$TERMINAL"
sed -i "s,i3-sensible-terminal,$TERMINAL,g" src/Main.hh
# Don't use 'make install', it wants to run the tests, which require
# something called 'catch', which isn't shipped in the src (it tries to
# download it, but fails, and I can't make myself care why). For the same
# reason, have to use 'make $PRGNAM' instead of plain make.
mkdir -p build
cd build
cmake \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=Release ..
make $PRGNAM
mkdir -p $PKG/usr/bin
install -m0755 -s $PRGNAM $PKG/usr/bin/$PRGNAM
cd ..
# Tell the user what the default terminal is, in the man page.
mkdir -p $PKG/usr/man/man1
sed "s,to start terminal apps *\$,& (default: $MANTERM)," < $PRGNAM.1 | \
gzip -9c > $PKG/usr/man/man1/$PRGNAM.1.gz
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a CHANGELOG LICENSE README* $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
sed "s,_TERMINAL_,$TERMINAL,g" $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
|