#!/bin/bash

# samba.SlackBuild
# Heavily based on the original Slackware build scripts,
# Modified by Stuart Winter <stuart@armedslack.org>
# 06-Aug-2004

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

# Paths to skeleton port's source & real Slackware source tree:
export CWD=$SLACKSOURCE/$PKGSERIES/$PACKAGE
export PORTCWD=$PWD

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

# Determine the CFLAGS for the known architectures:
case $PORTARCH in
   arm)     export SLKCFLAGS="-O2 -march=armv3 -mtune=xscale" ;;
   powerpc) export SLKCFLAGS="-O2" ;;
   sparc)   export SLKCFLAGS="-O2" ;;
esac

# Extract source:
tar jxvvf $CWD/$PACKAGE-$VERSION.tar.bz2
cd $PACKAGE-$VERSION
slackhousekeeping

# Apply patches:
#zcat $CWD/samba-3.0.23.nsswitch.diff.gz | patch -p2 --verbose || failpatch

cd source
# Configure:
CFLAGS="$SLKCFLAGS" \
./configure \
   --enable-cups \
   --with-fhs \
   --with-acl-support=yes \
   --with-automount \
   --enable-static=no \
   --enable-shared=yes \
   --prefix=/usr \
   --localstatedir=/var \
   --bindir=/usr/bin \
   --sbindir=/usr/sbin \
   --with-lockdir=/var/cache/samba \
   --sysconfdir=/etc \
   --with-configdir=/etc/samba \
   --with-privatedir=/etc/samba/private \
   --with-swatdir=/usr/share/swat \
   --with-smbmount \
   --with-quotas \
   --with-syslog \
   --with-utmp \
   --with-libsmbclient \
   --with-winbind \
   --with-ldap \
   $ARCH-slackware-linux || failconfig

# Build:
make || failmake

# Create package framework:
mkdir -p $PKG/{sbin,lib} \
         $PKG/usr/doc/samba-$VERSION \
         $PKG/var/spool/samba \
         $PKG/var/log/samba \
         $PKG/etc/samba/private \
         $PKG/var/cache/samba
chmod 700 $PKG/etc/samba/private
chmod 1777 $PKG/var/spool/samba

# Install into package:
make install DESTDIR=$PKG

# libnss_win* libraries:
cp -a nsswitch/libnss_winbind.so $PKG/lib/libnss_winbind.so.2
cp -a nsswitch/libnss_wins.so $PKG/lib/libnss_wins.so.2
( cd $PKG/lib
  ln -sf libnss_winbind.so.2 libnss_winbind.so
  ln -sf libnss_wins.so.2 libnss_wins.so )

# Add some (u)mount links:
mkdir -p $PKG/sbin
( cd $PKG/sbin
  rm -f mount.smbfs  ; ln -sf ../usr/bin/smbmount mount.smbfs
#  rm -f umount.smbfs ; ln -sf ../usr/bin/smbumount umount.smbfs
  rm -f mount.cifs   ; ln -sf ../usr/sbin/mount.cifs mount.cifs
#  rm -f umount.cifs  ; ln -sf ../usr/sbin/umount.cifs umount.cifs 
)

# Make sure libsmbclient gets installed:
mkdir -p $PKG/usr/lib/samba
( cd $PKG/usr/lib/samba
  rm -f libsmbclient.a
  mv libsmbclient.so ../libsmbclient.so.0.0
  ln -sf ../libsmbclient.so.0.0 libsmbclient.so
  cd ..
  rm -f libsmbclient.so.0 libsmbclient.so libsmbclient.a
  ln -sf libsmbclient.so.0.0 libsmbclient.so.0
  ln -sf libsmbclient.so.0.0 libsmbclient.so
)
chmod 644 $PKG/usr/include/libsmbclient.h

# Install default config file:
install -m644 $CWD/smb.conf.default $PKG/etc/samba/smb.conf-sample

if [ ! -r $PKG/usr/bin/smbget ]; then
  rm -f $PKG/usr/share/man/man1/smbget.1
  rm -f $PKG/usr/share/swat/help/smbget.1.html
fi

# We'll add rc.samba to the init directory, but chmod 644 so that it doesn't
# start by default:
mkdir -p $PKG/etc/rc.d
install -m644 $CWD/rc.samba $PKG/etc/rc.d/rc.samba.new

# Move man pages into Slackware location:
mv $PKG/usr/share/man $PKG/usr

# Install docs:
cd ..
cp -a COPYING Manifest README Read-Manifest-Now Roadmap WHATSNEW.txt docs examples \
      $PKG/usr/doc/$PACKAGE-$VERSION
# Junk:
rm -rf $PKG/usr/doc/$PACKAGE-$VERSION/docs/{htmldocs,manpages,*.pdf,docbook}
mkdir -p $PKG/usr/doc/samba-$VERSION/docs
( cd $PKG/usr/doc/$PACKAGE-$VERSION/docs
  ln -sf /usr/share/swat/using_samba using_samba
  ln -sf /usr/share/swat/help htmldocs )

# If necessary, start the fakeroot server so we can set file/dir ownerships:
start_fakeroot

# Apply generic Slackware packaging policies:
cd $PKG
slackstripall   # strip all .a archives and all ELFs
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

# Build the package:
if [ $PORTARCH = arm ]; then
   slackmp # run makepkg
  else
   makepkg -l y -c n $PKGSTORE/$PKGSERIES/$PACKAGE-$VERSION-$ARCH-$BUILD.tgz
fi

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