#!/bin/bash

# brltty.SlackBuild
# Heavily based on the original Slackware build scripts,
# Modified by Stuart Winter <mozes@slackware.com>
#
#
# Copyright 2010-2026  Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Record toolchain & other info for the build log:
slackbuildinfo

# Paths to skeleton port's source & real Slackware source tree:
slackset_var_cwds

# Temporary build locations:
export TMPBUILD=$TMP/build-$PKGNAM
export PKG=$TMP/package-$PKGNAM
mkpkgdirs # Delete & re-create temporary directories then cd into $TMPBUILD

# Extract source:
tar xf $CWD/$PKGNAM-$VERSION.tar.?z
cd $PKGNAM-$VERSION || failextract
slackhousekeeping

# Apply patches:

# Configure:
sh autogen || failconfig
./configure \
   --prefix=/usr \
   --bindir=/bin \
   --sbindir=/sbin \
   --libdir=/lib${LIBDIRSUFFIX} \
   --infodir=/usr/info \
   --mandir=/usr/man \
   --sysconfdir=/etc \
   --localstatedir=/var \
   --disable-java-bindings \
   --libexecdir=/usr/lib${LIBDIRSUFFIX} \
   --with-espeak_ng=/usr \
   --without-espeak \
   --build=${SLK_ARCH_BUILD} || failconfig

# Fix damaged Makefile:
sed -i "\/usr\/local\/lib.*/d" Bindings/Lua/Makefile

# Build:
make $NUMJOBS || make || failmake

# Install into package:
make install INSTALL_ROOT=$PKG TCL_DIR=/usr/lib${LIBDIRSUFFIX} || failinstall
rm -r $PKG/dev
chmod 755 $PKG/bin/* $PKG/lib${LIBDIRSUFFIX}/brltty/*

# This location does not appear to be (easily) configurable, so we'll
# just go ahead and move this directory if we find it in the wrong place:
if [ -d $PKG/usr/local/lib${LIBDIRSUFFIX}/lua ]; then
   mv $PKG/usr/local/lib${LIBDIRSUFFIX}/lua $PKG/usr/lib${LIBDIRSUFFIX}
   ( cd $PKG/usr ; rmdir -p local/lib${LIBDIRSUFFIX} )
fi

# Add polkit configs:
( cd Authorization/Polkit
  make install INSTALL_ROOT=$PKG )

# Add udev rules:
( cd Autostart/Udev
  make install INSTALL_ROOT=$PKG UDEV_LIBRARY_DIRECTORY=$PKG/lib/udev )

# Copy docs:
mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
cp -fav \
  README* COPYING* \
  Documents/{ChangeLog,Manual-*,TODO,CONTRIBUTORS,HISTORY,README.*} \
  $PKG/usr/doc/brltty-$VERSION
mv -fv Documents/ChangeLog .
changelogliposuction ChangeLog $PKGNAM $VERSION # Trim down a "ChangeLog" file

( cd $PKG/usr/doc/brltty-$VERSION
  find . -name "Makefile*" -exec rm -f {} \+
  find . -name "*.sgml" -exec rm -f {} \+
  find . -size 0 -type f -exec rm -f {} \+ )

# Write out the doinst.sh:
mkdir -p $PKG/install
cat << EOF > $PKG/install/doinst.sh
config() {
  NEW="\$1"
  OLD="\$(dirname \$NEW)/\$(basename \$NEW .new)"
  # If there's no config file by that name, mv it over:
  if [ ! -r \$OLD ]; then
    mv \$NEW \$OLD
  elif [ "\$(cat \$OLD | md5sum)" = "\$(cat \$NEW | md5sum)" ]; then # toss the redundant copy
    rm \$NEW
  fi
  # Otherwise, we leave the .new copy for the admin to consider...
}
config etc/brltty.conf.new

EOF

# Apply generic Slackware packaging policies:
cd $PKG
slackstripall   # strip all .a archives and all ELFs
#slackstriprpaths     # strip rpaths
slack_delete_lafiles # delete usr/lib{,64}/*.la
slackgzpages -i # compress man & info pages and delete usr/info/dir
slackslack      # chown -R root:root, chmod -R og-w, slackchown, slack644docs
slackdesc       # install slack-desc and doinst.sh
slackmp         # run makepkg

# Perform any final checks on the package:
cd $PKG
slackhlinks     # search for any hard links
