# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/mail-filter/spamassassin-fuzzyocr/spamassassin-fuzzyocr-3.5.1.ebuild,v 1.7 2008/08/02 20:38:25 tove Exp $

inherit perl-module eutils

MY_P="${P#spamassassin-}"

DESCRIPTION="SpamAssassin plugin for performing Optical Character Recognition (OCR) on attached images"
HOMEPAGE="http://fuzzyocr.own-hero.net/"
SRC_URI="http://users.own-hero.net/~decoder/fuzzyocr/${MY_P}-devel.tar.gz"

LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86"
IUSE="dbm gocr ocrad tesseract mysql logrotate amavis"

DEPEND="dev-lang/perl
		>=mail-filter/spamassassin-3.1.4"

RDEPEND="${DEPEND}
	gocr? 		( >=app-text/gocr-0.43 )
	ocrad? 		( >=app-text/ocrad-0.14 )
	tesseract? 	( app-text/tesseract )
	mysql? 		( dev-perl/DBD-mysql dev-perl/DBI )
	logrotate?	( app-admin/logrotate )
	dbm?		( virtual/perl-DB_File dev-perl/MLDBM-Sync virtual/perl-Storable )
	media-libs/netpbm
	media-libs/giflib
	dev-perl/String-Approx
	virtual/perl-Time-HiRes
	media-gfx/gifsicle"
#	postgres?	( dev-perl/DBD-Pg )

S="${WORKDIR}/${MY_P/fuzzyocr/FuzzyOcr}"

pkg_setup() {
	if ! use gocr && ! use ocrad && ! use tesseract ; then
		eerror
		eerror You did not specify an OCR engine. FuzzyOcr requires at least one
		eerror OCR engine USE flag to be enabled. It is possible to enable all.
		eerror
		eerror The 3 OCR engines are: gocr ocrad tesseract
		eerror Enable them in /etc/make.conf or /etc/portage/package.use
		eerror
		die "Configure failed"
	fi

	# create fuzzyocr group for logging and hashing
	if use dbm || use logrotate ; then
		use amavis || enewgroup fuzzyocr
	fi
}

src_unpack() {
		unpack ${A}
		cd ${S}

		# If no ocrad USE flag, remove it from Fuzzyocr.scansets / jni
		use ocrad || epatch "${FILESDIR}"/disableocrad.patch

		# If tesseract USE flag is set, enable it in Fuzzyocr.scansets /jni
		use tesseract && epatch "${FILESDIR}"/enabletesseract.patch

		# If gocr USE flag is unset, enable disable gocr in Fuzzyocr.scansets /jni
		use gocr || epatch "${FILESDIR}"/disablegocr.patch

		# Apply PgSQL patchset if USE postgres /juan
		#use postgres && epatch "${FILESDIR}"/postgresql.patch
}

src_install() {
		# called to get ${VENDOR_LIB}
		perlinfo

		local plugin_dir=${VENDOR_LIB}/Mail/SpamAssassin/Plugin

		insinto ${plugin_dir}
		doins FuzzyOcr.pm

		# Replace location of .pm file in config
		sed -ie "s:FuzzyOcr.pm:${plugin_dir}/FuzzyOcr.pm:" FuzzyOcr.cf

		# Enable logfile if logrotate
		if use logrotate ; then
			sed -ie "s:^#focr_verbose 3:focr_verbose 3:" FuzzyOcr.cf
			sed -ie "s:^#focr_logfile /tmp/FuzzyOcr.log:focr_logfile /var/log/FuzzyOcr.log:" FuzzyOcr.cf

			# Create the logfile with correct permissions /jni
			if [ ! -e /var/log/FuzzyOcr.log ]; then
				insinto /var/log
				newins /dev/null FuzzyOcr.log
				if use amavis ;  then
					fperms 600 /var/log/FuzzyOcr.log
					fowners	amavis:amavis /var/log/FuzzyOcr.log
				else
					fperms 660 /var/log/FuzzyOcr.log
					fowners root:fuzzyocr /var/log/FuzzyOcr.log
				fi
			fi

			diropts ""
			dodir /etc/logrotate.d
			insopts -m0644
			insinto /etc/logrotate.d
			newins ${FILESDIR}/fuzzyocr.logrotate FuzzyOcr
		fi

		# Create needed dir for dbs and change FuzzyOcr.cf /jni
		if use dbm ; then
			dodir /var/lib/FuzzyOcr
			keepdir /var/lib/FuzzyOcr
			if use amavis ; then
				fowners amavis:amavis /var/lib/FuzzyOcr
				fperms 700 /var/lib/FuzzyOcr
			else
				fowners root:fuzzyocr /var/lib/FuzzyOcr
				fperms 770 /var/lib/FuzzyOcr
			fi

			sed -ie "s:^#focr_digest_db /etc/mail/spamassassin/FuzzyOcr.hashdb:#focr_digest_db /var/lib/FuzzyOcr/FuzzyOcr.hashdb:" FuzzyOcr.cf
			sed -ie "s:^#focr_db_hash /etc/mail/spamassassin/FuzzyOcr.db:#focr_db_hash /var/lib/FuzzyOcr/FuzzyOcr.db:" FuzzyOcr.cf
			sed -ie "s:^#focr_db_safe /etc/mail/spamassassin/FuzzyOcr.safe.db:#focr_db_safe /var/lib/FuzzyOcr/FuzzyOcr.safe.db:" FuzzyOcr.cf

			if ! use amavis ; then
				insinto /var/lib/FuzzyOcr/

				local hash_files="FuzzyOcr.hashdb FuzzyOcr.db FuzzyOcr.safe.db"

				for file in ${hash_files}; do
					if [ ! -e /var/lib/FuzzyOcr/${file} ]; then
						newins /dev/null ${file}
						fperms 660 /var/lib/FuzzyOcr/${file}
						fowners root:fuzzyocr /var/lib/FuzzyOcr/${file}
					fi
				done
			fi
		fi

		insinto /etc/mail/spamassassin/

		doins FuzzyOcr.cf
		doins FuzzyOcr.words
		doins FuzzyOcr.scansets
		doins FuzzyOcr.preps
		insinto ${VENDOR_LIB}/FuzzyOcr
		doins FuzzyOcr/*

		docinto samples
		dodoc samples/*
}

pkg_postinst() {
		elog "You need to restart spamassassin (as root) before this plugin will work:"
		elog "/etc/init.d/spamd restart"
		echo
		if use dbm || use logrotate ; then
			local files=""

			if use dbm ; then
				files="/var/lib/FuzzyOcr"
			fi

			if use logrotate ; then
				if [ -z ${files} ] ; then
					files="/var/log/FuzzyOcr.log"
				else
					files="${files} /var/log/FuzzyOcr.log"
				fi
			fi

			if use amavis ; then
				elog "All permissions are set for the user amavis!"
			else
				elog "Permissions have been set for the fuzzyocr group, to enable"
				elog "logging or hashing add any required users to this group"
			fi

			echo
			ewarn "If you run spamassassin as another user, please make sure to"
			ewarn "change permissions on" ${files/ / and }
			echo
		fi
}