123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- #!/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 [ ! -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
|