# slackware-specific packaging functions

# tiny_make_package
tiny_make_package() {
	PACKAGE_NAME=$1
	TARGET_NAME=$(dirname "$PACKAGE_NAME")
	PACKAGE_NAME=$(basename "$PACKAGE_NAME")
	SHORT_NAME=$(basename "$PACKAGE_NAME" ".$PKG_FORMAT")
	umask 022
	echo ""
	
	if [[ "$EUID" = "0" ]] ; then
		${TAR} cvf "$SHORT_NAME".tar .
	else
		${TAR} --owner=root --group=root -cvf "$SHORT_NAME".tar .
	fi
	echo ""
	
	if [[ "$PKG_FORMAT" = "tgz" ]] ; then
		LONG_NAME=$SHORT_NAME.tar.gz
		echo "Compressing $SHORT_NAME.tar using gzip..."
		gzip -9 $SHORT_NAME.tar
	elif [[ "$PKG_FORMAT" = "tbz" ]] ; then
		LONG_NAME=$SHORT_NAME.tar.bz2
		echo "Compressing $SHORT_NAME.tar using bzip2..."
		bzip2 $SHORT_NAME.tar
	elif [[ "$PKG_FORMAT" = "tlz" ]] ; then
		LONG_NAME=$SHORT_NAME.tar.lzma
		echo "Compressing $SHORT_NAME.tar using lzma..."
		lzma $SHORT_NAME.tar
	elif [[ "$PKG_FORMAT" = "txz" ]] ; then
		LONG_NAME=$SHORT_NAME.tar.xz
		echo "Compressing $SHORT_NAME.tar using xz(lzma-2)..."
		xz $SHORT_NAME.tar
	elif [[ "$PKG_FORMAT" = "tpkg" ]] ; then
		LONG_NAME=$SHORT_NAME.tar.xz
		echo "Compressing $SHORT_NAME.tar using xz(lzma-2)..."
		xz $SHORT_NAME.tar
	fi
	
	echo "Renaming $LONG_NAME to $PACKAGE_NAME..."
	mv "$LONG_NAME" "$PACKAGE_NAME"
	
	if [[ ! "$TARGET_NAME" = "." ]]; then
		echo "Moving $PACKAGE_NAME to $TARGET_NAME"
		mv "$PACKAGE_NAME" "$TARGET_NAME"
	fi
}

# Internal Routines
mini_installpkg_slack() {
THIS_PACKAGE="$1"
THIS_PACKAGE_BASENAME="${THIS_PACKAGE##*/}"
THIS_PACKAGE_SHORT_NAME="${THIS_PACKAGE_BASENAME%.*}"
echo $BLUE"Installing package "$NORMAL"${THIS_PACKAGE_BASENAME}"
case "$PKG_FORMAT" in
	tgz) PKG_COMPRESSOR=gzip ;;
	tbz) PKG_COMPRESSOR=bzip2 ;;
	tlz) PKG_COMPRESSOR=lzma ;;
	txz) PKG_COMPRESSOR=xz ;;
esac
# ( cd  ; ${TAR} -xzlUpvf - ) < $PACKAGE 2> /dev/null
# ( cd  ; ${TAR} -xlUpv --use-compress-program $PKG_COMPRESSOR -f - ) < $PACKAGE 2> /dev/null
${TAR} -xlUpv -C / --use-compress-program $PKG_COMPRESSOR -f "$THIS_PACKAGE" 2> /dev/null

DATABASE_FILE=$ADM_DIR_NAME/packages/"$THIS_PACKAGE_SHORT_NAME"
make_database
if [[ -f install/$PKG_POSTINST ]] ; then
	echo "Executing install script for $SHORT_NAME..."
	( cd / ; sh install/$PKG_POSTINST -install; )
fi

if [[ -x /sbin/ldconfig ]] && [[ $ROOT = "" ]] ; then
    /sbin/ldconfig
fi

if [[ -d install ]] ; then
		if [[ -r install/$PKG_POSTINST ]]; then
			cp install/$PKG_POSTINST $ADM_DIR_NAME/scripts/"$THIS_PACKAGE_SHORT_NAME"
			chmod 755 $ADM_DIR_NAME/scripts/"$THIS_PACKAGE_SHORT_NAME"
		fi
    ( cd /install 2> /dev/null && rm -f $PKG_POSTINST slack-* pkg-* *desc *required *provides *suggests *conflicts 1> /dev/null 2>&1 )
    rmdir /install 1> /dev/null 2>&1
fi
}

make_slack_pkg() {
	# create the package
	rm -f "$PACKAGE"
	echo -n $BLUE"Creating package: "$NORMAL"${PACKAGE##*/} - "
	if [[ $QUIET = "YES" ]] ; then
		cd "$PKG_DIR" ;
		tiny_make_package "$PACKAGE" &> /dev/null
	else
		cd "$PKG_DIR" ;
		echo ""
		tiny_make_package "$PACKAGE"
	fi
	if [[ -f "$PACKAGE" ]] ; then
		echo $GREEN"Done"$NORMAL
		if [[ "$CREATE_MD5_CHECKSUM" = "YES" ]]; then
			echo $BLUE"Creating md5 checksum - "$NORMAL"$(basename $PACKAGE).md5"
			cd "$PKG_DEST_DIR"
			md5sum $(basename "$PACKAGE") > "$PACKAGE".md5
		fi
		echo $BLUE"Package Creation - "$GREEN"Successful! "$NORMAL"Package Location:"
		echo "$PACKAGE"
	else
		echo $RED"FAILED! "$NORMAL
		echo "Creation of ${PACKAGE##*/} has failed."
		FAILED="PACKAGE CREATION in: $FUNCNAME"
	fi
	[[ $REALLY_INSTALL = "YES" ]] && really_install "$PACKAGE"
	if [[ $PAUSE = "AFTER" ]] || [[ $PAUSE = $FUNCNAME ]] ; then
		echo $MAGENTA"Notice - "$BLUE"Pausing after: "$NORMAL" '$FUNCNAME'  Press ENTER to continue"
		read
	fi
}
