summaryrefslogtreecommitdiff
blob: 02cac709a6811600d968db224b6670c21218566b (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
# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-zope/zope/zope-2.6.1.ebuild,v 1.2 2003/04/04 03:05:26 kutsuya Exp $

S="${WORKDIR}/Zope-${PV}-src"

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/${PV}/Zope-${PV}-src.tgz"
LICENSE="ZPL"
SLOT="0"

KEYWORDS="x86 ~ppc ~sparc"

# This is for developers that wish to test Zope with virtual/python.
# If this is a problem, let me know right away. --kutsuya@gentoo.org
# I wondering if we need a USE flag for this. But I'm planning to have
# a private environmental variable called PYTHON_SLOT_VERSION set in
# ebuilds to build extensions for python2.1.

if [ "${PYTHON_SLOT_VERSION}" = 'VIRTUAL' ] ; then
	RDEPEND="virtual/python"
	python='python'
else
	RDEPEND="=dev-lang/python-2.1.3*"
	python='python2.1'
fi
	
DEPEND="virtual/glibc
		>=sys-apps/sed-4.0.5
	   ${RDEPEND}"

RDEPEND="app-admin/zope-config
	${RDEPEND}"

ZUID=zope
ZGID=$(echo ${P} |sed -e "s:\.:_:g")
ZS_DIR=${ROOT}/usr/share/zope/
ZI_DIR=${ROOT}/var/lib/zope/
ZSERVDIR=${ZS_DIR}/${PF}/
ZINSTDIR=${ZI_DIR}/${ZGID}
CONFDIR=${ROOT}/etc/conf.d/
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() 
{
    chown -R ${ZUID}:${2} ${1}
    chmod -R g+u ${1}
    chmod -R o-rwx ${1}
}

#

install_help()
{
	einfo "Need to setup an inituser \(admin\) before executing zope:"
	einfo "\tzope-config --zpasswd"
    einfo "To execute default Zope instance:"
	einfo "\t/etc/conf.d/${ZGID} start"
}

#

pkg_setup() 
{
	if [ "${PYTHON_SLOT_VERSION}" = 'VIRTUAL' ] ; then
		ewarn "WARNING: You set PYTHON_SLOT_VERSION=VIRTUAL. So this ebuild will"
		ewarn "use python-2.2*. Zope Corp. only recommends using python-2.1.3 "
		ewarn "with this version of zope. Emerge at your own risk."
		sleep 12
	fi	
    if ! groupmod ${ZGID} > /dev/null 2>&1 ; then
		groupadd ${ZGID} || die "Can not add ${ZGID} group!"
    fi
    if ! id ${ZUID} > /dev/null 2>&1 ; then
		useradd -d ${ZS_DIR} -c "Zope root user" -u 261 ${ZUID} \
	|| die "Can not add ${ZUID} user!"
    fi
}

#

src_compile() {
    $python wo_pcgi.py || die "Failed to compile."
}

#

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

    # using '/etc/init.d/zope'
	rm -Rf start stop LICENSE.txt README.txt doc/

	# Need to rip out the zinstance stuff out
    # but save as templates
	mkdir -p .templates/import
	cp import/README.txt .templates/import/
	mv -f Extensions/ .templates/
	mv -f var/ .templates/
	
    # Add conf.d script.
    dodir /etc/conf.d
    echo "ZOPE_OPTS=\"-u zope\"" | \
    cat - ${FILESDIR}/${PV}/zope.envd > .templates/zope.confd

    # Fill in environmental variables
    sed -i -e "/ZOPE_HOME=/ c\\ZOPE_HOME=${ZSERVDIR}\\ " \
        -e "/SOFTWARE_HOME=/ c\\SOFTWARE_HOME=${ZSERVDIR}/lib/python\\ " \
		.templates/zope.confd

    # Add rc-script.
	#!! TODO: fill in $python in zope-r2.initd
    sed -e "/python=/ c\\python=\"${python}\"\\ " ${FILESDIR}/${PV}/${RCNAME} \
		> .templates/zope.initd

    # Copy the remaining contents of ${S} into the ${D}.
    dodir ${ZSERVDIR}
    cp -a . ${D}${ZSERVDIR}

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

#

pkg_postinst() 
{
	# Here we add our default zope instance.
	/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;
	local VERSION_DEF="$(zope-config --zidef-get)"
	if [ "${ZGID}" = "$VERSION_DEF" ] ; then
		rm -f ${ZI_DIR}/.default
	fi
}

#

pkg_config() 
{	
	install_help
}