summaryrefslogtreecommitdiff
blob: 7c1415fb7097b4a4238636390e525233549ffdaf (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
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-fs/openafs/openafs-1.2.10-r2.ebuild,v 1.11 2005/05/30 18:57:52 swegener Exp $

inherit check-kernel fixheadtails flag-o-matic eutils toolchain-funcs

DESCRIPTION="The AFS 3 scalable distributed file system"
HOMEPAGE="http://www.openafs.org/"
SRC_URI="http://openafs.org/dl/openafs/${PV}/${P}-src.tar.bz2"

LICENSE="IPL-1"
SLOT="0"
KEYWORDS="~x86 ~alpha ~ia64"
IUSE=""

DEPEND="virtual/linux-sources
	>=sys-apps/portage-2.0.47-r10
	>=sys-libs/ncurses-5.2
	>=sys-libs/pam-0.75
	>=sys-apps/gawk-3.1.1"

pkg_setup() {
	if is_2_5_kernel || is_2_6_kernel
	then
		die "OpenAFS does not yet support 2.5 and 2.6 kernels"
	fi
}

src_unpack() {
	unpack ${A}

	cd ${S}
	ht_fix_file "acinclude.m4"
	ht_fix_file "config.guess"
	ht_fix_file "src/afsd/afs.rc.linux"
	ht_fix_file "aclocal.m4"
	ht_fix_file "configure"
	ht_fix_file "configure-libafs"
	epatch ${FILESDIR}/openafs-pinstall-execve-1.2.10.patch
	#added for bug #10952
	#tested on x86, alpha, amd64 (rphillips)
	epatch ${FILESDIR}/openafs-typechange.patch
}

src_compile() {
	# The CC/MT_CC setting is required for link on alpha, and
	# recommended for link on x86 and other arches (even those that
	# don't technically require it).
	# http://marc.theaimsgroup.com/?l=gentoo-dev&m=107112691504786&w=2
	#
	# It's possible that CFLAGS could be added to MT_CC as well, but
	# I'm not experimenting here, just making it work on multiple
	# arches...  (12 Jan 2004 agriffis)
	econf --enable-transarc-paths || die econf
	make CC="$(tc-getCC)" MT_CC="$(tc-getCC) -fPIC" || die make
}

src_install() {
	local sys_name=$(sed -n 's/^SYS_NAME=//p' Makefile) || die sys_name

	make dest || die dest

	# Client
	cd ${S}/${sys_name}/dest/root.client/usr/vice

	insinto /etc/afs/modload
	doins etc/modload/*
	insinto /etc/afs/C
	doins etc/C/*

	insinto /etc/afs
	doins ${FILESDIR}/{ThisCell,CellServDB}
	doins etc/afs.conf

	# Can't make this in src_install with keepdir because there might
	# be mounted afs filesystems at the time that this package is
	# installed/updated.  Can't test with mount because this might not
	# be the host where the package will be installed.  The best way
	# to do this is put it in pkg_* functions.  (12 Jan 2004 agriffis)
	#mount -t afs | awk '{ exit $3 == "/afs" }' && keepdir /afs

	exeinto /etc/init.d
	newexe ${FILESDIR}/afs.rc.rc6 afs

	dosbin etc/afsd

	# Client Bin
	cd ${S}/${sys_name}/dest
	exeinto /usr/afsws/bin
	doexe bin/*

	exeinto /etc/afs/afsws
	doexe etc/*

	cp -a include lib ${D}/usr/afsws
	dosym  /usr/afsws/lib/afs/libtermlib.a /usr/afsws/lib/afs/libnull.a

	# Server
	cd ${S}/${sys_name}/dest/root.server/usr/afs
	exeinto /usr/afs/bin
	doexe bin/*

	dodir /usr/vice
	dosym /etc/afs /usr/vice/etc
	dosym /etc/afs/afsws /usr/afsws/etc

	dodoc ${FILESDIR}/README

	dodir /etc/env.d
	echo 'CONFIG_PROTECT_MASK="/etc/afs/C /etc/afs/afsws"' \
		>> ${D}/etc/env.d/01${PN}
	echo 'PATH=/usr/afsws/bin:/etc/afs/afsws' \
		>> ${D}/etc/env.d/01${PN}
	echo 'ROOTPATH=/usr/afsws/bin:/etc/afs/afsws:/usr/afs/bin' \
		>> ${D}/etc/env.d/01${PN}
}

pkg_postinst() {
	# See note in src_install regarding this
	mkdir /afs 2>/dev/null

	einfo
	einfo "UPDATE CellServDB and ThisCell to your needs !!"
	einfo "FOLLOW THE INSTRUCTIONS IN AFS QUICK BEGINNINGS"
	einfo "PAGE >45 TO DO INITIAL SERVER SETUP"
	einfo
}

pkg_prerm() {
	# See note in src_install regarding this
	rmdir /afs 2>/dev/null
}