summaryrefslogtreecommitdiff
blob: f4695fa91696b5e232aa587c0f37c91c2f21c624 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-admin/amanda/amanda-2.4.4.ebuild,v 1.11 2003/12/25 02:43:56 robbat2 Exp $

inherit eutils
DESCRIPTION="The Advanced Maryland Automatic Network Disk Archiver"
HOMEPAGE="http://www.amanda.org/"
SRC_URI="mirror://sourceforge/amanda/${P}.tar.gz"
LICENSE="as-is"
SLOT="0"
KEYWORDS="x86 ~ppc -sparc"
DEPEND="sys-libs/readline
		virtual/inetd
		virtual/mta
		app-arch/mt-st
		net-mail/mailx
		media-gfx/gnuplot
		sys-apps/gawk
		app-arch/tar
		sys-devel/autoconf
		sys-devel/automake
		dev-lang/perl
		sys-apps/mtx
		app-arch/dump
		net-mail/mailx
		samba? ( net-fs/samba )
		berkdb? ( sys-libs/db )
		gdbm? ( sys-libs/gdbm )
		xfs? ( sys-fs/xfsdump )"

IUSE="pic debug gdbm berkdb samba xfs"

S=${WORKDIR}/${P}

[ -z "${AMANDA_GROUP_GID}" ] && AMANDA_GROUP_GID=87
[ -z "${AMANDA_GROUP_NAME}" ] && AMANDA_GROUP_NAME=amanda
[ -z "${AMANDA_USER_NAME}" ] && AMANDA_USER_NAME=amanda
[ -z "${AMANDA_USER_UID}" ] && AMANDA_USER_UID=87
[ -z "${AMANDA_USER_SH}" ] && AMANDA_USER_SH=/bin/false
[ -z "${AMANDA_USER_HOMEDIR}" ] && AMANDA_USER_HOMEDIR=/var/spool/amanda
[ -z "${AMANDA_USER_GROUPS}" ] && AMANDA_USER_GROUPS=${AMANDA_GROUP_NAME}
# This installs Amanda, with the server. However, it could be a client,
# just specify an alternate server name in AMANDA_SERVER.
[ -z "${AMANDA_SERVER}" ] && AMANDA_SERVER=localhost
[ -z "${AMANDA_SERVER_TAPE}" ] && AMANDA_SERVER_TAPE="${AMANDA_SERVER}"
[ -z "${AMANDA_SERVER_INDEX}" ] && AMANDA_SERVER_INDEX="${AMANDA_SERVER}"
[ -z "${AMANDA_TAR_LISTDIR}" ] && AMANDA_TAR_LISTDIR=${AMANDA_USER_HOMEDIR}/tar-lists
[ -z "${AMANDA_CONFIG_NAME}" ] && AMANDA_CONFIG_NAME=DailySet1
[ -z "${AMANDA_TMPDIR}" ] && AMANDA_TMPDIR=${AMANDA_USER_HOMEDIR}/tmp

pkg_setup() {
	enewgroup ${AMANDA_GROUP_NAME} ${AMANDA_GROUP_GID}
	enewuser ${AMANDA_USER_NAME} ${AMANDA_USER_UID} ${AMANDA_USER_SH} ${AMANDA_USER_HOMEDIR} ${AMANDA_USER_GROUPS}
	echo >/dev/null
}

src_compile() {
	# fix bug #36316 
	addpredict /var/cache/samba/gencache.tdb

	local myconf
	cd ${S}

	[ -z "${AMANDA_DBMODE}" ]  || use gdbm && AMANDA_DBMODE=gdbm
	use berkdb && AMANDA_DBMODE=db
	[ -z "${AMANDA_DBMODE}" ] && AMANDA_DBMODE=text
	einfo "Using '${AMANDA_DBMODE}' style database"
	myconf="${myconf} --with-db=${AMANDA_DBMODE}"

	einfo "Using ${AMANDA_SERVER_TAPE} for tape server."
	myconf="${myconf} --with-tape-server=${AMANDA_SERVER_TAPE}"
	einfo "Using ${AMANDA_SERVER_INDEX} for index server."
	myconf="${myconf} --with-index-server=${AMANDA_SERVER_TAPE}"
	einfo "Using ${AMANDA_USER_NAME} for amanda user."
	myconf="${myconf} --with-user=${AMANDA_USER_NAME}"
	einfo "Using ${AMANDA_GROUP_NAME} for amanda group."
	myconf="${myconf} --with-group=${AMANDA_GROUP_NAME}"
	einfo "Using ${AMANDA_TAR_LISTDIR} as tar listdir."
	myconf="${myconf} --with-gnutar-listdir=${AMANDA_TAR_LISTDIR}"
	einfo "Using ${AMANDA_CONFIG_NAME} as default config name."
	myconf="${myconf} --with-config=${AMANDA_CONFIG_NAME}"
	einfo "Using ${AMANDA_TMPDIR} as Amanda temporary directory."
	myconf="${myconf} --with-tmpdir=${AMANDA_TMPDIR}"

	if [ -n "${AMANDA_PORTS_UDP}" ] && [ -n "${AMANDA_PORTS_TCP}" ] && [ -z "${AMANDA_PORTS_BOTH}" ] ; then
		eerror "If you want _both_ UDP and TCP ports, please use only the"
		eerror "AMANDA_PORTS environment variable for identical ports, or set"
		eerror "AMANDA_PORTS_BOTH."
		die "Bad port setup!"
	fi
	if [ -n "${AMANDA_PORTS_UDP}" ]; then
		einfo "Using UDP ports ${AMANDA_PORTS_UDP/,/-}"
		myconf="${myconf} --with-udpportrange=${AMANDA_PORTS_UDP}"
	fi
	if [ -n "${AMANDA_PORTS_TCP}" ]; then
		einfo "Using TCP ports ${AMANDA_PORTS_TCP/,/-}"
		myconf="${myconf} --with-tcpportrange=${AMANDA_PORTS_TCP}"
	fi
	if [ -n "${AMANDA_PORTS}" ]; then
		einfo "Using ports ${AMANDA_PORTS/,/-}"
		myconf="${myconf} --with-portrange=${AMANDA_PORTS}"
	fi

	# Extras
	# Speed option
	myconf="${myconf} --with-buffered-dump"
	# Debug
	myconf="${myconf} `use_with debug debugging`"
	# PIC
	myconf="${myconf} `use_with pic`"
	myconf="${myconf} --localstatedir=${AMANDA_USER_HOMEDIR}"

	use samba && myconf="${myconf} --with-smbclient=/usr/bin/smbclient" || myconf="${myconf} --without-smbclient"

	econf ${myconf} || die "econf failed!"
	emake || die "emake failed!"

	# Compile the tapetype program too
	cd tape-src
	emake tapetype || "emake tapetype failed!"

	dosed "s,/usr/local/bin/perl,/usr/bin/perl," ${S}/contrib/set_prod_link.pl
	perl ${S}/contrib/set_prod_link.pl

}


src_install() {
	make DESTDIR=${D} install || die

	into /usr
	newsbin tape-src/tapetype tapetype

	dodoc AUTHORS C* INSTALL NEWS README
	docinto example
	dodoc ${S}/example/*
	docinto docs
	dodoc ${S}/docs/*
	prepalldocs

	if use xfs; then
		dodir ${D}/var/xfsdump/inventory
		mkdir -p ${D}/var/xfsdump/inventory
	fi

	# einfo "Installing Amandahosts File for ${AMANDA_SERVER}"
	insinto ${AMANDA_USER_HOMEDIR}
	newins ${FILESDIR}/amanda-amandahosts .amandahosts
	dosed "s/__AMANDA_SERVER__/${AMANDA_SERVER}/" ${AMANDA_USER_HOMEDIR}/.amandahosts
	newins ${FILESDIR}/amanda-profile .profile

	# einfo "Installing Sample Daily Cron Job for Amanda"
	CRONDIR=/etc/cron.daily/
	exeinto ${CDRONDIR}
	newexe ${FILESDIR}/amanda-cron amanda
	dosed "s,__AMANDA_CONFIG_NAME__,${AMANDA_CONFIG_NAME},g" ${CRONDIR}/amanda
	fperms 644 ${CRONDIR}/amanda

	insinto /etc/amanda/lbl
	newins ${S}/example/3hole.ps 3hole.ps
	newins ${S}/example/8.5x11.ps 8.5x11.ps
	newins ${S}/example/DIN-A4.ps DIN-A4.ps
	newins ${S}/example/DLT.ps DLT.ps
	newins ${S}/example/EXB-8500.ps EXB-8500.ps
	newins ${S}/example/HP-DAT.ps HP-DAT.ps

	# Amanda example configs
	insinto /etc/amanda/example
	newins ${FILESDIR}/example_amanda.conf amanda.conf
	newins ${FILESDIR}/example_disklist disklist
	newins ${FILESDIR}/example_global.conf global.conf
	insinto /etc/amanda/example2
	newins ${S}/example/amanda.conf amanda.conf
	newins ${S}/example/disklist disklist

	# einfo "Installing Sample Daily Backup Configuration"
	insinto /etc/amanda/${AMANDA_CONFIG_NAME}
	fowners ${AMANDA_USER_NAME}:${AMANDA_GROUP_NAME} /etc/amanda
	fowners ${AMANDA_USER_NAME}:${AMANDA_GROUP_NAME} /etc/amanda/${AMANDA_CONFIG_NAME}
	fowners ${AMANDA_USER_NAME}:${AMANDA_GROUP_NAME} /etc/amanda/${AMANDA_CONFIG_NAME}/*
	fperms 700 /etc/amanda
	fperms 700 /etc/amanda/${AMANDA_CONFIG_NAME}

	local i
	for i in amandates dumpdates; do
		touch ${D}/etc/${i}
		fowners ${AMANDA_USER_NAME}:${AMANDA_GROUP_NAME} /etc/${i}
		fperms 600 /etc/${i}
	done

	dodir ${AMANDA_TAR_LISTDIR}
	dodir ${AMANDA_TMPDIR}
	dodir ${AMANDA_TMPDIR}/dumps
	dodir ${AMANDA_USER_HOMEDIR}/${AMANDA_CONFIG_NAME}
	fowners ${AMANDA_USER_NAME}:${AMANDA_GROUP_NAME} ${AMANDA_USER_HOMEDIR}
	fowners ${AMANDA_USER_NAME}:${AMANDA_GROUP_NAME} ${AMANDA_TAR_LISTDIR}
	fowners ${AMANDA_USER_NAME}:${AMANDA_GROUP_NAME} ${AMANDA_TMPDIR}
	fowners ${AMANDA_USER_NAME}:${AMANDA_GROUP_NAME} ${AMANDA_TMPDIR}/dumps
	fowners ${AMANDA_USER_NAME}:${AMANDA_GROUP_NAME} ${AMANDA_USER_HOMEDIR}/${AMANDA_CONFIG_NAME}
	fperms 700 ${AMANDA_USER_HOMEDIR}

	# DevFS
	insinto /etc/devfs.d
	newins ${FILESDIR}/amanda-devfs amanda

	if  [ -x "/usr/sbin/xinetd" ]; then
		# Installing Amanda Xinetd Services Definition
		insinto /etc/xinetd.d
		newins ${FILESDIR}/amanda-xinetd amanda
		dosed "s/__AMANDA_SERVER__/${AMANDA_SERVER}/g" /etc/xinetd.d/amanda
	else
		echo > ${D}/etc/amanda/inetd.amanda "amanda	  dgram   udp    wait    amanda  /usr/libexec/amanda/amandad    amandad"
		echo >> ${D}/etc/amanda/inetd.amanda "amandaidx stream  tcp    nowait  amanda  /usr/libexec/amanda/amindexd   amindexd"
		echo >> ${D}/etc/amanda/inetd.amanda "amidxtape stream  tcp    nowait  amanda  /usr/libexec/amanda/amidxtaped amidxtaped"
	fi
}

pkg_postinst() {
	einfo "You should configure Amanda in /etc/amanda now."
	if  [ -x "/usr/sbin/xinetd" ]; then
		einfo "Don't forget to check /etc/xinetd.d/amanda and restart"
		einfo "xinetd afterwards!"
	else
		einfo "No xinetd found. Config example for inetd is in /etc/amanda/inetd.amanda"
	fi
	einfo "NOTICE: If you need raw acces to partitions you need to add the"
	einfo "amanda user to the 'disk' group and uncomment following lines in"
	einfo "your /etc/devfs.d/amanda:"
	einfo "SCSI:"
	einfo "REGISTER   ^scsi/host.*/bus.*/target.*/lun.*/part[0-9]    PERMISSIONS root.disk 660"
	einfo "IDE:"
	einfo "REGISTER   ^ide/host.*/bus.*/target.*/lun.*/part[0-9]    PERMISSIONS root.disk 660"
}