#Maintainer: Thorsten Muehlfelder <thenktor@gmx.de>

pkgname=spkg-pkgtools
pkgver=1.0rc11
pkgrel=10tm_salix13.0
source=("http://spkg.megous.com/dl/releases/spkg-$pkgver.tar.gz" "get-new-src.sh" "http://thenktor.dyndns.org/packages/$pkgname/pkgtools-13.0.src.tar.gz" "01-txz.patch" "02-size.patch" "http://thenktor.dyndns.org/packages/$pkgname/setup.services" "update-icon-cache.patch")
sourcetemplate=http://thenktor.dyndns.org/packages/$pkgname/
url="http://spkg.megous.com/index.php"
options=("tgz")

slackdesc=\
(
#|-----handy-ruler------------------------------------------------------|
"$pkgname - package manager"
"spkg is implemented in C and optimized for speed. This package"
"contains wrapper script for original Slackware tools installpkg,"
"upgradepkg and removepkg."
)

build() {
	#
	### spkg section
	#

	cd $startdir/src/spkg-${pkgver}
	patch -p1 < ../01-txz.patch || return 1
	patch -p1 < ../02-size.patch || return 1
	patch -p1 < ../update-icon-cache.patch || return 1
	./configure --prefix=/usr  --libdir=/usr/lib${LIBDIRSUFFIX} --mandir=/usr/man || return 1
	make || return 1
	make DESTDIR=$startdir/pkg install

	# prepare directories for lib preload
	mkdir -p $startdir/pkg/usr/lib/spkg/bin
	mkdir -p $startdir/pkg/usr/lib/spkg/preload

	# copy preloaded libs to the package
	cd $startdir/pkg/usr/bin/
	cp `ldd spkg | grep libpopt | awk '{print $3}'` $startdir/pkg/usr/lib/spkg/preload || return 1
	cp `ldd spkg | grep libglib | awk '{print $3}'` $startdir/pkg/usr/lib/spkg/preload || return 1
	cp `ldd spkg | grep libJudy | awk '{print $3}'` $startdir/pkg/usr/lib/spkg/preload || return 1
	cp `ldd spkg | grep libz | awk '{print $3}'` $startdir/pkg/usr/lib/spkg/preload || return 1

	# move spkg to new dir
	mv $startdir/pkg/usr/bin/spkg $startdir/pkg/usr/lib/spkg/bin/ || return 1

	# preload wrapper script
	mkdir -p $startdir/pkg/sbin
	cat << "EOF" > $startdir/pkg/sbin/spkg || return 1
#!/bin/sh
LD_LIBRARY_PATH=/usr/lib/spkg/preload /usr/lib/spkg/bin/spkg "$@"
exit $?
EOF

	# pkgtools wrapper scripts
	cat << "EOF" > $startdir/pkg/sbin/installpkg
#!/bin/sh
/sbin/spkg -i "$@"
exit $?
EOF

	cat << "EOF" > $startdir/pkg/sbin/upgradepkg
#!/bin/sh
/sbin/spkg -u "$@"
exit $?
EOF

	cat << "EOF" > $startdir/pkg/sbin/removepkg
#!/bin/sh
/sbin/spkg -d "$@"
exit $?
EOF

	# make wrapper scripts executable
	chmod 755 $startdir/pkg/sbin/*

	#
	### pkgtools section
	#

	cd $startdir/src/pkgtools

	# Install Slackware script manpages:
	cd manpages
	mkdir -p $startdir/pkg/usr/man/man8
	for page in installpkg.8 upgradepkg.8 removepkg.8 ; do
		sed -i 's#installpkg#slack-installpkg#' $page
		sed -i 's#upgradepkg#slack-upgradepkg#' $page
		sed -i 's#removepkg#slack-removepkg#' $page
		cat $page | gzip -9c > $startdir/pkg/usr/man/man8/slack-$page.gz
	done
	for page in explodepkg.8 makepkg.8 pkgtool.8 ; do
		sed -i 's#installpkg#slack-installpkg#' $page
		sed -i 's#upgradepkg#slack-upgradepkg#' $page
		sed -i 's#removepkg#slack-removepkg#' $page
		cat $page | gzip -9c > $startdir/pkg/usr/man/man8/$page.gz
	done
	cd ..

	# Install Slackware scripts:
	cd scripts

	# Install the core Slackware package tools:
	mkdir -p $startdir/pkg/sbin
	for file in installpkg removepkg upgradepkg ; do
		sed -i 's#installpkg#slack-installpkg#' $file
		sed -i 's#upgradepkg#slack-upgradepkg#' $file
		sed -i 's#removepkg#slack-removepkg#' $file
		cp -a $file $startdir/pkg/sbin/slack-$file
	done
	for file in explodepkg makebootdisk makepkg pkgtool ; do
		sed -i 's#installpkg#slack-installpkg#' $file
		sed -i 's#upgradepkg#slack-upgradepkg#' $file
		sed -i 's#removepkg#slack-removepkg#' $file
		cp -a $file $startdir/pkg/sbin
	done
	chown root:root $startdir/pkg/sbin/*
	chmod 755 $startdir/pkg/sbin/*

	# These scripts are used during the installation:
	mkdir -p $startdir/pkg/var/log/setup/tmp
	chmod 700 $startdir/pkg/var/log/setup/tmp
	for file in setup.* ; do
		sed -i 's#installpkg#slack-installpkg#' $file
		sed -i 's#upgradepkg#slack-upgradepkg#' $file
		sed -i 's#removepkg#slack-removepkg#' $file
		cp -a $file $startdir/pkg/var/log/setup
	done

	# use our own setup.services script
	cd $startdir/src/
	mv setup.services $startdir/pkg/var/log/setup/ || return 1

	# chown & chmod
	chown root:root $startdir/pkg/var/log/setup/setup.*
	chmod 755 $startdir/pkg/var/log/setup/setup.*
}
