summaryrefslogtreecommitdiff
blob: d73bc2e4dad3eb5c414c6ba18b5362486b98040b (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
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-zope/zope/zope-2.12.2.ebuild,v 1.2 2010/01/16 19:32:07 fauli Exp $

EAPI="2"

inherit eutils multilib python versionator

MY_PN="Zope2"
MY_P="${MY_PN}-${PV}"

DESCRIPTION="Zope is a web application platform used for building high-performance, dynamic web sites"
HOMEPAGE="http://www.zope.org http://pypi.python.org/pypi/Zope2"
SRC_URI="http://pypi.python.org/packages/source/${MY_PN:0:1}/${MY_PN}/${MY_P}.tar.gz"

LICENSE="ZPL"
SLOT="$(get_version_component_range 1-2)"
KEYWORDS="~amd64 ~x86"
IUSE="doc"
RESTRICT="test"

RDEPEND="|| ( dev-lang/python:2.7 dev-lang/python:2.6 )
	dev-python/docutils
	dev-python/restrictedpython
	dev-python/setuptools
	net-zope/acquisition
	net-zope/datetime
	net-zope/extensionclass
	net-zope/persistence
	net-zope/tempstorage
	net-zope/transaction
	net-zope/zdaemon
	net-zope/zconfig
	net-zope/zlog
	>=net-zope/zodb-3.9
	net-zope/zope-app-form
	net-zope/zope-app-publication
	net-zope/zope-app-publisher
	net-zope/zope-app-schema
	net-zope/zope-component
	net-zope/zope-configuration
	net-zope/zope-container
	net-zope/zope-contentprovider
	net-zope/zope-contenttype
	net-zope/zope-deferredimport
	net-zope/zope-event
	net-zope/zope-exceptions
	net-zope/zope-formlib
	net-zope/zope-i18n
	net-zope/zope-i18nmessageid
	net-zope/zope-interface
	net-zope/zope-lifecycleevent
	net-zope/zope-location
	net-zope/zope-pagetemplate
	net-zope/zope-processlifetime
	net-zope/zope-proxy
	net-zope/zope-publisher
	net-zope/zope-schema
	net-zope/zope-security
	net-zope/zope-sendmail
	net-zope/zope-sequencesort
	net-zope/zope-site
	net-zope/zope-size
	net-zope/zope-structuredtext
	net-zope/zope-tales
	net-zope/zope-testbrowser
	net-zope/zope-testing
	net-zope/zope-traversing
	net-zope/zope-viewlet
"
DEPEND="${RDEPEND}
	doc? ( dev-python/sphinx )"

S="${WORKDIR}/${MY_P}"

ZUID="zope"
ZGID="zope"

ZSERVDIR="/usr/$(get_libdir)/${PN}-${SLOT}"

# Narrow the scope of ownership/permissions.
# Security plan:
# * ZUID is the superuser for all zope instances.
# * ZGID is for a single instance's administration.

pkg_setup() {
	python_set_active_version 2
}

src_prepare() {
	epatch "${FILESDIR}/${P}-fix_syntax_error.patch"
}

src_compile() {
	"$(PYTHON -2)" setup.py build || "Building failed"

	if use doc; then
		cd doc
		emake html || die "Building of documentation failed"
	fi
}

src_install() {
	"$(PYTHON -2)" setup.py install --home="${ZSERVDIR}" --root="${D}" || die "Installation failed"
	dosym "$(PYTHON -2 -a)" "${ZSERVDIR}/bin/python" || die "dosym failed"

	for file in "${D}usr/$(get_libdir)/${PN}-${SLOT}/bin/"*; do
		if [[ -f "${file}" && ! -L "${file}" ]]; then
			sed -e '/import sys/iimport os\nos.environ["PYTHONPATH"] = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "lib", "python"))' -e '/import sys/asys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "lib", "python")))' -i "${file}" || die "Changing of os.environ and sys.path in ${file} failed"
		fi
	done

	touch "${D}usr/$(get_libdir)/${PN}-${SLOT}/lib/python/Products/__init__.py" || die "touch failed"

	if use doc; then
		pushd doc/.build/html > /dev/null
		dodoc _sources/* || die "Installation of documentation failed"
		docinto html
		dohtml -r [A-Za-z]* _static || die "Installation of documentation failed"
		popd > /dev/null
	fi

	# Copy the init script skeleton to skel directory of our installation.
	insinto "${ZSERVDIR}/skel"
	doins "${FILESDIR}/zope.initd" || die "doins failed"
}

pkg_postinst() {
	python_mod_optimize "${ZSERVDIR}/lib/python"

	# Create the zope user and group for backward compatibility.
	enewgroup ${ZGID} 261
	usermod -g ${ZGID} ${ZUID} 2>&1 >/dev/null || \
	enewuser ${ZUID} 261 -1 /var/$(get_libdir)/zope  ${ZGID}

	einfo "Be warned that you need at least one zope instance to run zope."
	einfo "Please emerge zope-config for further instance management."
}

pkg_postrm() {
	python_mod_cleanup "${ZSERVDIR}/lib/python"
}