aboutsummaryrefslogtreecommitdiff
path: root/desktop/j4-dmenu-desktop/j4-dmenu-desktop.SlackBuild
blob: 6de5ff8b9a425bfa55a3ab7f3f6a8267d12f5893 (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
#!/bin/sh

# 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

PRGNAM=j4-dmenu-desktop
VERSION=${VERSION:-2.18}
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

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:-tgz}