# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-backup/bacula/bacula-2.4.1-r1.ebuild,v 1.6 2008/08/11 17:26:35 yngwin Exp $

#
# TODO:
# - install stuff from examples/:
#	- examples/nagios/ + add nagios USE flag etc.
#	  (see also example/reports/check_bacula_pools.sh which is newer
#	  than examples/nagios/check_bacula_pools.sh)
#   - examples/autochangers/
#   - examples/devices/
#   - examples/python/
#   - examples/reports/baculareport.pl
# - correctly filter unneeded /usr/libexec/bacula/ stuff depending
#   on selected USE flags, e.g. bacula-clientonly
# - install stuff from bacula-gui package:
#   - bweb
#   - bacula-web
#   - bimagemgr
#   - brestore
# - bacula >=2.4.0 supports --without-qwt -- reflect with USE=qwt?
#

EAPI="1"
inherit eutils

IUSE="bacula-clientonly bacula-console bacula-nodir bacula-nosd doc gnome ipv6 logrotate logwatch mysql postgres python qt4 readline sqlite sqlite3 ssl static tcpd wxwindows X"
# bacula-web bimagemgr brestore bweb
KEYWORDS="~amd64 hppa ppc sparc x86"

DESCRIPTION="Featureful client/server network backup suite"
HOMEPAGE="http://www.bacula.org/"

DOC_VER="${PV}"
DOC_SRC_URI="mirror://sourceforge/bacula/${PN}-docs-${DOC_VER}.tar.bz2"
#GUI_VER="${PV}"
#GUI_SRC_URI="mirror://sourceforge/bacula/${PN}-gui-${GUI_VER}.tar.gz"
SRC_URI="mirror://sourceforge/bacula/${P}.tar.gz
		doc? ( ${DOC_SRC_URI} )"
#		bacula-web? ( ${GUI_SRC_URI} )
#		bimagemgr? ( ${GUI_SRC_URI} )
#		brestore? ( ${GUI_SRC_URI} )
#		bweb? ( ${GUI_SRC_URI} )

LICENSE="GPL-2"
SLOT="0"

DEPEND="
	>=sys-libs/zlib-1.1.4
	dev-libs/gmp
	!bacula-clientonly? (
		postgres? ( >=virtual/postgresql-server-7.4 )
		mysql? ( virtual/mysql )
		sqlite? ( =dev-db/sqlite-2* )
		sqlite3? ( >=dev-db/sqlite-3.0.0 )
		virtual/mta
	)
	bacula-console? (
		wxwindows? ( =x11-libs/wxGTK-2.6* )
		qt4? (
			|| ( x11-libs/qt-svg:4 =x11-libs/qt-4.3* )
			>=x11-libs/qwt-5
		)
		gnome? (
			>=gnome-base/libgnome-2
			x11-libs/gksu
		)
	)
	ssl? ( dev-libs/openssl )
	logrotate? ( app-admin/logrotate )
	logwatch? ( sys-apps/logwatch )
	tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
	readline? ( >=sys-libs/readline-4.1 )
	doc? (
		virtual/ghostscript
		dev-tex/latex2html
	)"
RDEPEND="${DEPEND}
	!bacula-clientonly? (
		sys-block/mtx
		app-arch/mt-st
	)"

pkg_setup() {
	local dbnum
	declare -i dbnum=0
	if ! useq bacula-clientonly; then
		if useq mysql; then
			export mydbtype='mysql'
			let dbnum++
		fi
		if useq postgres; then
			export mydbtype='postgresql'
			let dbnum++
		fi
		if useq sqlite; then
			export mydbtype='sqlite'
			let dbnum++
		fi
		if useq sqlite3; then
			export mydbtype='sqlite3'
			let dbnum++
		fi
		if [[ "${dbnum}" -lt 1 ]]; then
			eerror
			eerror "To use ${P} it is required to set a database in the USE flags."
			eerror "Supported databases are mysql, postgresql, sqlite, sqlite3"
			eerror
			die "No database type selected."
		elif [[ "${dbnum}" -gt 1 ]]; then
			eerror
			eerror "You have set ${P} to use multiple database types."
			eerror "I don't know which to set as the default!"
			eerror "You can use /etc/portage/package.use to set per-package USE flags"
			eerror "Set it so only one database type, mysql, postgres, sqlite, sqlite3"
			eerror
			die "Multiple database types selected."
		fi
	fi

	# create the daemon group and user
	if [ -z "$(egetent group bacula)" ]; then
		enewgroup bacula
		einfo
		einfo "The group 'bacula' has been created. Any users you add to this"
		einfo "group have access to files created by the daemons."
		einfo
	fi
	if ! useq bacula-clientonly; then
		if [ -z "$(egetent passwd bacula)" ]; then
			enewuser bacula -1 -1 /var/lib/bacula bacula,disk,tape,cdrom,cdrw
			einfo
			einfo "The user 'bacula' has been created.  Please see the bacula manual"
			einfo "for information about running bacula as a non-root user."
			einfo
		fi
	fi
}

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

	# adjusts default configuration files for several binaries
	# to /etc/bacula/ instead of ./
	pushd src && epatch "${FILESDIR}/${PV}/${PN}"-default-configs.patch && popd

	# replaces (deprecated) gnomesu with gksu in the gnome menu files
	useq bacula-console && useq gnome && epatch "${FILESDIR}/${PV}/${PN}"-gnomesu2gksu.diff

	# apply upstream patches
	epatch "${FILESDIR}"/${PV}/${PV}-mount.patch
	epatch "${FILESDIR}"/${PV}/${PV}-mysql-timeout.patch
	epatch "${FILESDIR}"/${PV}/${PV}-sd-crash.patch
}

src_compile() {
	if useq doc && has_version dev-tex/latex2html && ! built_with_use dev-tex/latex2html png; then
		eerror "${PN} needs the PNG support of latex2html"
		eerror "Please re-emerge dev-tex/latex2html with USE=png"
		die "need dev-tex/latex2html built with png USE flag"
	fi

	local myconf=''

	if useq bacula-clientonly; then
		myconf="${myconf} \
			$(use_enable bacula-clientonly client-only) \
			$(use_enable static static-fd)"
	else
		myconf="${myconf} \
			--with-${mydbtype} \
			$(use_enable static static-tools) \
			$(use_enable static static-fd) \
			$(use_enable !bacula-nodir build-dird) \
			$(use_enable !bacula-nosd build-stored)"
		if ! useq bacula-nodir; then
			myconf="${myconf} $(use_enable static static-dir)"
		fi
		if ! useq bacula-nosd; then
			myconf="${myconf} $(use_enable static static-sd)"
		fi

	fi

	if useq bacula-console; then
		if useq qt4 && has_version '