summaryrefslogtreecommitdiffstats
path: root/network/dog/dog.SlackBuild
blob: 2b5e586287f9a672abd3c130542f4b3414c61a12 (plain)
#!/bin/bash

# Slackware build script for dog

# Written by B. Watson (urchlay@slackware.uk)

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

# Notes:

# This is written in rust, which annoys me (not the language, but its
# build system). Fortunately it works with the rust included in
# Slackware 15.0 (no need for rustup).

# I considered just doing a binary repack, but upstream doesn't
# provide a 32-bit x86 binary...

# The vendored sources were made thus:
## tar xvf dog-0.1.0.tar.gz
## cd dog-0.1.0
## cargo vendor
## cd ..
## tar cvfJ dog-0.1.0-vendored-sources.tar.xz dog-0.1.0/vendor/
# It's a bunch of .crate files, like 70 of them. I would not have
# packaged this if I didn't have a place to host my own tarball
# with all the vendor stuff (if I had to list 70 .crate files in
# my .info file, I'd just forget about this).

# The man page was generated with:
## pandoc --standalone -t man /tmp/SBo/dog-0.1.0/man/dog.1.md > dog.1
# (adapted from the Justfile)

# Linode has some docs on using this:
# https://www.linode.com/docs/guides/use-dog-linux-dns-client/

cd $(dirname $0) ; CWD=$(pwd)

PRGNAM=dog
VERSION=${VERSION:-0.1.0}
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}

# It's in rust, we don't need any C flags. Also, no lib|lib64 here.

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
tar xvf $CWD/$PRGNAM-$VERSION-vendored-sources.tar.xz
cd $PRGNAM-$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 {} +

# Contents of config.toml came from 'cargo vendor' output.
mkdir -p .cargo
cat $CWD/config.toml > .cargo/config.toml

# Setting CARGO_HOME prevents writing a 0-byte /root/.cargo/.package-cache
CARGO_HOME=`pwd`/.cargo-home cargo build --release

install -D -s -m0755 -oroot -groot target/release/dog $PKG/usr/bin/dog

# Pregenerated (tiny) man page to avoid dependency on (huge) pandoc.
mkdir -p $PKG/usr/man/man1
gzip -9c < $CWD/dog.1 > $PKG/usr/man/man1/dog.1.gz

# Completions for various shells. They all seem to work.
PSH=$PKG/usr/share
install -D -m0644 completions/dog.bash $PSH/bash-completion/completions/dog
install -D -m0644 completions/dog.fish $PSH/fish/completions/dog.fish
install -D -m0644 completions/dog.zsh  $PSH/zsh/site-functions/_dog

PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
mkdir -p $PKGDOC
cp -a README* LICENCE $PKGDOC
cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE