#!/bin/sh
#
# Copyright 2005 Paul Blazejowski and Zach Borgerding <zborgerd@gmail.com>
# Available under the terms of the GNU GPL.
#

NAME="shadow"
VERSION="4.0.12"
REVISION="2"
PKG_SOURCEURL='ftp://ftp.pld.org.pl/software/$NAME/$NAME-$VERSION.tar.bz2'
PKG_SOURCEMD5=''
PKG_PATCH[0]="shadow-4.0.10-fix-configure.patch"
PKG_PATCH[1]="shadow-4.0.10-nls-manpages.patch"
PKG_PATCH[2]="shadow-4.0.11.1-perms.patch"
PKG_PATCH[3]="shadow-4.0.11.1-su-fix-environment.patch"
PKG_PATCH[4]="shadow-login-defs.patch"
PKG_PATCH[5]="_shadow.tar.gz"
PKG_PATCH[6]="adduser"
PKG_PATCH[7]="pam.chage"
PKG_PATCH[8]="pam.chfn"
PKG_PATCH[9]="pam.chpasswd"
PKG_PATCH[10]="pam.chsh"
PKG_PATCH[11]="pam.groupadd"
PKG_PATCH[12]="pam.groupdel"
PKG_PATCH[13]="pam.groupmod"
PKG_PATCH[14]="pam.newusers"
PKG_PATCH[15]="pam.login"
PKG_PATCH[16]="pam.passwd"
PKG_PATCH[17]="pam.shadow"
PKG_PATCH[18]="pam.su"
PKG_PATCH[19]="pam.useradd"
PKG_PATCH[20]="pam.userdel"
PKG_PATCH[21]="pam.usermod"
PKG_PATCH[22]="login.defs"

. $DLG_ROOT/config
. $DLG_ROOT/SCRIPTS/dropline-functions.sh

export LDFLAGS="-Wl,--as-needed -fPIC -lpam -lpam_misc"
cflags
cxxflags
prepare
applypatch 0 0
applypatch 1 0
applypatch 2 0
applypatch 3 1
applypatch 4 0

# let the fun begin :D
#spewdo "cd $PKG_SRCROOT"
#libtoolize --force
#aclocal
#automake -a
#autoconf

analyzesource
configure --disable-shared \
	--disable-desrpc \
	--with-libpam \
	--with-libcrack \
	--with-libcrypt \
	--with-libpam \
	--enable-static=yes
make
# We're not installing anything here
#makeinstall install-strip

# Prep setup steps
spewdo "cd $PKG_STAGEROOT"
findpatch filename _shadow.tar.gz
spewdo "explodepkg $filename"
createdir $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d

spewdo "cat /dev/null > $PKG_STAGEROOT/var/log/faillog.new"
spewdo "cat $PKG_SRCROOT/etc/login.defs.linux > $PKG_STAGEROOT$PKG_SYSCONFDIR/login.defs.new"
findpatch filename adduser
spewdo "cp $filename $PKG_STAGEROOT$PKG_PREFIX/sbin"

# This code below is borrowed from Todd's fix script
( cd $PKG_SRCROOT/po
  for file in *.gmo
  do
  	mkdir -p $PKG_STAGEROOT$PKG_PREFIX/share/locale/`basename ${file} .gmo`/LC_MESSAGES
  	cat ${file} > $PKG_STAGEROOT$PKG_PREFIX/share/locale/`basename ${file} .gmo`/LC_MESSAGES/shadow.mo
  done
)

( cd $PKG_SRCROOT/src
  cat login > $PKG_STAGEROOT/bin/login
  cat su > $PKG_STAGEROOT/bin/su
  cat sulogin > $PKG_STAGEROOT/sbin/sulogin
  for file in chpasswd faillog groupadd groupdel groupmod grpck \
  	lastlog logoutd mkpasswd newusers pwck useradd userdel usermod \
  	pwconv pwunconv grpconv grpunconv vipw
  do
  	cat $file > $PKG_STAGEROOT$PKG_PREFIX/sbin/$file
  done
  for file in chage chfn chsh expiry gpasswd newgrp passwd
  do
  	cat $file > $PKG_STAGEROOT$PKG_PREFIX/bin/$file
  done
)

( cd $PKG_SRCROOT
  cp contrib/adduser.sh $PKG_STAGEROOT/sbin/adduser
)

createdir $PKG_STAGEROOT$PKG_PREFIX/man

install_man_pages() {
for file in chage.1 chfn.1 chsh.1 gpasswd.1 groups.1 id.1 login.1 newgrp.1 \
passwd.1 su.1 ; do
  if [ -r $file ]; then
    mkdir -p $1/man1
    cp $file $1/man1/$file
  fi
done
for file in pw_auth.3 shadow.3 ; do
  if [ -r $file ]; then
    mkdir -p $1/man3
    cp $file $1/man3/$file
  fi
done
for file in faillog.5 limits.5 login.access.5 login.defs.5 passwd.5 \
porttime.5 shadow.5 suauth.5 ; do
  if [ -r $file ]; then
    mkdir -p $1/man5
    cp $file $1/man5/$file
  fi
done
for file in chpasswd.8 faillog.8 groupadd.8 groupdel.8 groupmod.8 \
grpck.8 lastlog.8 logoutd.8 mkpasswd.8 newusers.8 pwauth.8 pwck.8 pwconv.8 \
sulogin.8 useradd.8 userdel.8 usermod.8 vipw.8 ; do
  if [ -r $file ]; then
    mkdir -p $1/man8
    cp $file $1/man8/$file
  fi
done
}

( cd $PKG_SRCROOT/man
  install_man_pages $PKG_STAGEROOT$PKG_PREFIX/man
for dir in *
  do
  	if [ -d $dir ]; then
  		( cd $dir ; install_man_pages $PKG_STAGEROOT$PKG_PREFIX/man/$dir )
  	fi
  done
)

# And now we copy the various pam auth files
findpatch filename pam.login
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d/login.new"
findpatch filename pam.passwd
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d/passwd.new"
findpatch filename pam.shadow
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d/shadow.new"
findpatch filename pam.su
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d/su.new"
findpatch filename pam.useradd
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d/useradd.new"
# Added for shadow 4.0.7
# these are req by ^^^^^
findpatch filename pam.chage
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d/chage.new"
findpatch filename pam.chfn
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d/chfn.new"
findpatch filename pam.chpasswd
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d/chpasswd.new"
findpatch filename pam.chsh
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d/chsh.new"
findpatch filename pam.groupadd
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d/groupadd.new"
findpatch filename pam.groupdel
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d/groupdel.new"
findpatch filename pam.groupmod
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d/groupmod.new"
findpatch filename pam.newusers
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d/newusers.new"
findpatch filename pam.userdel
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d/userdel.new"
findpatch filename pam.usermod
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/pam.d/usermod.new"

#Copy the login.defs.  This config file *must* be included, or we'll
#get login errors.
findpatch filename login.defs
spewdo "cp $filename $PKG_STAGEROOT$PKG_SYSCONFDIR/login.defs.new"


tidydocumentation
analyzebinaries
finalizepackage
packagize
cleanup
