#!/bin/bash # Slackware build script for ircII # Written by B. Watson (urchlay@slackware.uk) # Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. # I don't know why nobody's already done a SlackBuild for this. # Normally I prefer all-lowercase package names, but this just looks # *wrong* as "ircii". # 20210913 bkw: # - update for v20210616. The datestamp comes from the output of # "ircII -v" (not the ChangeLog). # - change DEFSRV to irc.libera.chat, now that freenode is a wasteland. # - use a private libexec/ircII dir instead of binaries in /usr/libexec. # done because some other ircII-based client might conflict someday. # - generate and include HTML docs. # - add NOTES_TO_SELF to avoid cluttering up the script with comments. # - correct and expand Debian's man pages. # - add support for 'paranoid mode'. # - have slack-desc show default server and paranoid mode. cd $(dirname $0) ; CWD=$(pwd) PRGNAM=ircII VERSION=${VERSION:-20210616_2} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} SRCNAM=${PRGNAM,,} SRCVER=${VERSION%_*} # We're applying Debian's patches against a slightly older version. DEBSRCVER=20210328 DEBVER=${VERSION#*_} 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 PARANOID="${PARANOID:-no}" case "$PARANOID" in y*|Y*|t*|T*|1) para_opt="--with-paranoid" ;; *) para_opt="--without-paranoid" ;; esac echo "=== PARANOID='$PARANOID', para_opt='$para_opt'" DEFSRV="${DEFSRV:-SSLIRC/irc.libera.chat:6697}" case "$DEFSRV" in none|NONE) ;; *:*) srvopt="--with-default-server=$DEFSRV" ;; *) echo "$0: invalid DEFSRV, use host:port, SSLIRC/host:port, or 'none'" 1>&2 exit 1 ;; esac echo "=== DEFSRV='$DEFSRV', srvopt='$srvopt'" rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $SRCNAM tar xvf $CWD/$SRCNAM-$SRCVER.tar.bz2 cd $SRCNAM tar xvf $CWD/${SRCNAM}_$DEBSRCVER-$DEBVER.debian.tar.xz 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 {} \+ # apply most of Debian's patches, except: # - the absolute-path patch would move the nonexistent # /usr/share/irc/ircII.{motd,servers} to /etc/irc/{motd,servers}. # Since we don't ship either file, and their paths are settable in # ~/.ircrc anyway, I see no use for this patch. # - the Add-ioption patch is meant to fix some compile warnings that we # don't actually get. Plus, it won't apply cleanly. rm -f debian/patches/0004-absolute-path* \ debian/patches/0003-Add-ioption* for i in $( cat debian/patches/series ); do [ -e debian/patches/$i ] && patch -p1 < debian/patches/$i done # fix warnings caused by missing includes. sed -i -e '1i#include ' \ -e '1i#include ' \ source/term.c # do not compile with termcap. there's no --disable-termcap or similar, # have to do surgery. sed -i -e '/AC_CHECK_LIB(termcap/s,termcap,ncurses,g' \ -e 's,termcap\.h ,,' \ configure.in # my own typo/grammar/etc fixes. minor nitpicks, maybe. patch -p1 < $CWD/manpage.diff autoreconf -ifv # is there a disadvantage to enabling emacs meta keys? # 20210913 bkw: force --with-openssl, rather than letting it # autodetect. this is so we can find out right away if Slackware's # openssl gets upgraded to something ircII doesn't yet support. CFLAGS="$SLKCFLAGS -Wall -Wl,-s" \ ./configure \ $srvopt \ $para_opt \ --with-emacs-meta-keys \ --with-openssl \ --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --libexecdir=/usr/libexec/$PRGNAM \ --sysconfdir=/etc \ --localstatedir=/var \ --mandir=/usr/man \ --docdir=/usr/doc/$PRGNAM-$VERSION \ --build=$ARCH-slackware-linux make # make install doesn't create this dir, and doesn't respect DESTDIR # for the man dir. mkdir -p $PKG/usr/man/man1 make install DESTDIR=$PKG mandir=$PKG/usr/man/man1 # package called ircII, so let's have an ircII executable. ln -s $(basename $(realpath $PKG/usr/bin/irc)) $PKG/usr/bin/$PRGNAM rm -f $PKG/usr/man/man1/irc.1 gzip -9 $PKG/usr/man/man1/*.1 ln -s ircII.1.gz $PKG/usr/man/man1/irc.1.gz # Debian includes some extra man pages. I've expanded them a bit and # fixed some typos. for i in $CWD/man/*.1; do sed "s,@VERSION@,$VERSION,g" < $i | \ gzip -9c > $PKG/usr/man/man1/$( basename $i ).gz done # HTML docs (generated from /help text). Sure, why not? mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/html perl doc/help2html.pl $PKG/usr/share/irc/help $PKG/usr/doc/$PRGNAM-$VERSION/html rm -f doc/*.1 doc/*.spec* doc/*.orig doc/*.pl mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a ChangeLog NEWS README doc/* contrib $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install sed -e "s,@para_opt@,$para_opt," \ -e "s,@srvopt@,$srvopt," \ < $CWD/slack-desc \ > $PKG/install/slack-desc cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE