summaryrefslogtreecommitdiff
blob: 57fe72befe9a512ec2c4db0c3d0e7db7e154bbd6 (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
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-zope/zope/zope-2.7.1.ebuild,v 1.5 2005/01/14 21:16:20 radek Exp $

inherit eutils

SFPV="${PV//_beta/-b}"
SDPV="${PV//_beta/b}"
DESCRIPTION="Zope is a web application platform used for building high-performance, dynamic web sites."
HOMEPAGE="http://www.zope.org"
SRC_URI="http://www.zope.org/Products/Zope/${SDPV}/Zope-${SFPV}.tgz"
LICENSE="ZPL"
SLOT="${PV}"

KEYWORDS="~x86 ~sparc ~ppc ~alpha"
IUSE="unicode"

RDEPEND="=dev-lang/python-2.3.3"
python='python2.3'

DEPEND="${RDEPEND}
virtual/libc
>=sys-apps/sed-4.0.5
>=app-admin/zope-config-0.3"

S="${WORKDIR}/Zope-${SFPV}-0"

ZUID=zope
ZGID=zope
ZS_DIR=${ROOT}/usr/share/zope/
ZI_DIR=${ROOT}/var/lib/zope/
ZSERVDIR=${ZS_DIR}${PF}/
RCNAME=zope.initd

# Narrow the scope of ownership/permissions.
# Security plan:
# * ZUID is the superuser for all zope instances.
# * ZGID is for a single instance's administration.
# * Other's should not have any access to ${ZSERVDIR},
#   because they can work through the Zope web interface.
#   This should protect our code/data better.

# Parameters:
#  $1 = instance directory
#  $2 = group

setup_security() {
	# The old version made everything owned by zope:${DEFAULT_INSTANCE_GID},
	# and group-writable. This is like making everything in net-www/apache2 
	# owned by apache! The zope instance runs as the zope user, so the zope
	# user should not own any files. However, we make everything group-owned
	# by the zope group, of which the zope user is a member, so that running
	# zope instances will be able to read everything.
	# -- Andy Dustman
	chown -R root:${2} ${1}
	chmod -R g+r,g-w,o-rwx ${1}
}

install_help() {
	einfo "Run zope-config to set up an instance before trying to start zope."
}

pkg_preinst() {
	enewgroup ${ZGID}
	enewuser ${ZUID} 261 /bin/bash ${ZS_DIR} ${ZGID}
}

src_compile() {
	./configure --ignore-largefile --prefix=${ZOPE_DIR} || die "Failed to configure."
	emake || die "Failed to compile."
}

src_install() {
	dodoc README.txt
	dodoc doc/*.txt
	docinto PLATFORMS ; dodoc doc/PLATFORMS/*

	# Patched StructuredText will accept source text formatted in utf-8 encoding, 
	# apply all formattings and output utf-8 encoded text.
	# if you want to use this option you need to set your
	# system python encoding to utf-8 (create the file sitecusomize.py inside
	# your site-packages, add the following lines
	# 	import sys
	# 	sys.setdefaultencoding('utf-8')
	# If this is a problem, let me know right away. --batlogg@gentoo.org
	# I wondering if we need a USE flag for this and wheter we can set the
	# sys.encoding automtically
	# so i defined a use flag

	if use unicode; then
		einfo "Patching structured text"
		einfo "make sure you have set the system python encoding to utf-8"
		einfo "create the file sitecustomize.py inside your site-packages"
	 	einfo "import sys"
		einfo "sys.setdefaultencoding('utf8')"
		cd ${S}/lib/python/StructuredText/
		epatch ${FILESDIR}/i18n-1.0.0.patch
	    cd ${S}
	fi

	make install PREFIX=${D}/${ZSERVDIR}
	rm -rf ${D}${ZSERVDIR}/doc
	dosym ${DOCDESTTREE} ${D}${ZSERVDIR}/doc

	skel=${D}${ZSERVDIR}/skel
	dodir /etc/init.d
	cp ${FILESDIR}/${PV}/zope.initd ${skel}/zope.initd

	setup_security ${D}${ZSERVDIR} ${ZGID}
}

pkg_postinst() {
	# Here we add our default zope instance.
	# I strongly believe a default instance should not be installed.
	# -- Andy Dustman
	#/usr/sbin/zope-config --zserv=${ZSERVDIR} --zinst=${ZINSTDIR} \
	#	--zgid=${ZGID}
	install_help
}

pkg_postrm() {
	# rcscripts and conf.d files will remain. i.e. /etc protection.

	# Delete .default if this ebuild is the default. zprod-manager will
	# have to handle a missing default;
	rm -f ${ZI_DIR}/.default
}

pkg_config() {
	install_help
}