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
|
# Copyright 1999-2003 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-php/mod_php/mod_php-4.3.3-r3.ebuild,v 1.2 2003/11/05 10:33:58 joker Exp $
IUSE="${IUSE} apache2"
DESCRIPTION="Apache module for PHP"
KEYWORDS="x86 sparc ~ppc ~alpha ~hppa ~arm ~amd64"
detectapache() {
local domsg=
[ -n "$1" ] && domsg=1
HAVE_APACHE1=
HAVE_APACHE2=
has_version '=net-www/apache-1*' && HAVE_APACHE1=1
has_version '=net-www/apache-2*' && HAVE_APACHE2=1
[ -n "${HAVE_APACHE1}" ] && APACHEVER=1
[ -n "${HAVE_APACHE2}" ] && APACHEVER=2
[ -n "${HAVE_APACHE1}" ] && [ -n "${HAVE_APACHE2}" ] && APACHEVER='both'
case "${APACHEVER}" in
1) [ -n "${domsg}" ] && einfo 'Apache1 only detected' ;;
2) [ -n "${domsg}" ] && einfo 'Apache2 only detected';;
both)
if [ "`use apache2`" ]; then
[ -n "${domsg}" ] && einfo "Multiple Apache versions detected, using Apache2 (USE=apache2)"
APACHEVER=2
else
[ -n "${domsg}" ] && einfo 'Multiple Apache versions detected, using Apache1 (USE=-apache2)'
APACHEVER=1
fi ;;
*) if [ -n "${domsg}" ]; then
MSG="Unknown Apache version!"; eerror $MSG ; die $MSG
else
APACHEVER=0
fi; ;;
esac
}
detectapache
SLOT="${APACHEVER}"
[ "${APACHEVER}" -eq '2' ] && USE_APACHE2='2' || USE_APACHE2=''
PHPSAPI="apache${APACHEVER}"
# BIG FAT WARNING!
# the php eclass requires the PHPSAPI setting!
# In this case the PHPSAPI setting is dependant on the detectapache function
# above this point as well!
inherit php eutils
DEPEND="${DEPEND}
>=net-www/apache-1.3.26-r2
apache2? ( >=net-www/apache-2.0.43-r1 )
>=sys-apps/findutils-4.1.7-r5
"
pkg_setup() {
if has_version '=sys-apps/findutils-4.1.20'; then
eerror "Sorry, you need to have >=sys-apps/findutils-4.1.20-r1"
eerror "installed, due to a shortcoming in Portage we can't"
eerror "put it into the DEPEND list yet (to be fixed soon)..."
die
fi
}
src_unpack() {
multiinstwarn
detectapache domsg
php_src_unpack
}
src_compile() {
#no readline on server SAPI
myconf="${myconf} --without-readline"
# Every Apache2 MPM EXCEPT prefork needs Zend Thread Safety
if [ -n "${USE_APACHE2}" ]; then
APACHE2_MPM="`apache2 -l |egrep 'worker|perchild|leader|threadpool|prefork'|cut -d. -f1|sed -e 's/^[[:space:]]*//g;s/[[:space:]]+/ /g;'`"
einfo "Apache2 MPM: ${APACHE2_MPM}"
case "${APACHE2_MPM}" in
*prefork*) ;;
*) myconf="${myconf} --enable-experimental-zts" ; ewarn "Enabling ZTS for Apache2 MPM" ;;
esac;
fi
#use apache2 \
myconf="${myconf} --with-apxs${USE_APACHE2}=/usr/sbin/apxs${USE_APACHE2}"
php_src_compile
}
src_install() {
php_src_install
einfo "Adding extra symlink to php.ini for Apache${USE_APACHE2}"
dodir /etc/apache${USE_APACHE2}/conf/
dodir ${PHPINIDIRECTORY}
dosym ${PHPINIDIRECTORY}/${PHPINIFILENAME} /etc/apache${USE_APACHE2}/conf/${PHPINIFILENAME}
einfo "Adding extra symlink to Apache${USE_APACHE2} extramodules for PHP"
dosym /usr/lib/apache${USE_APACHE2}-extramodules ${PHPINIDIRECTORY}/lib
exeinto /usr/lib/apache${USE_APACHE2}-extramodules
einfo "Installing mod_php shared object now"
doexe .libs/libphp4.so
if [ -n "${USE_APACHE2}" ] ; then
einfo "Installing a Apache2 config for PHP (70_mod_php.conf)"
insinto /etc/apache2/conf/modules.d
doins ${FILESDIR}/70_mod_php.conf
else
einfo "Installing a Apache config for PHP (mod_php.conf)"
insinto /etc/apache/conf/addon-modules
doins ${FILESDIR}/mod_php.conf
dosym ${PHPINIDIRECTORY}/${PHPINIFILENAME} /etc/apache/conf/addon-modules/${PHPINIFILENAME}
fi
}
apache2msg() {
einfo "Edit /etc/conf.d/apache2 and add \"-D PHP4\" to APACHE2_OPTS"
ewarn "This is a CHANGE from previous behavior, which was \"-D PHP\""
ewarn "This is for the upcoming PHP5 support. The ebuild will attempt"
ewarn "to make this update between PHP and PHP4 automatically"
}
multiinstwarn() {
ewarn "Due to some previous bloopers with PHP and slotting, you may have"
ewarn "multiple copies of mod_php installed. Please look at the autoclean"
ewarn "output at the end of the emerge and unmerge all but relevant"
ewarn "copies."
}
apache2fix() {
einfo "Attemping to update /etc/conf.d/apache2 automatically for the PHP/PHP4 change."
local oldfile="/etc/conf.d/apache2.old.`date +%Y%m%d%H%M%S`"
cp /etc/conf.d/apache2 ${oldfile}
sed -re 's,-D PHP\>,-D PHP4,g' ${oldfile} <${oldfile} >/etc/conf.d/apache2
}
pkg_preinst() {
multiinstwarn
[ "${APACHEVER}" -eq '2' ] && apache2fix
php_pkg_preinst
}
pkg_postinst() {
php_pkg_postinst
multiinstwarn
einfo "To have Apache run php programs, please do the following:"
if [ "`use apache2`" ] ; then
apache2msg
else
einfo "1. Execute the command:"
einfo " \"ebuild /var/db/pkg/dev-php/${PF}/${PF}.ebuild config\""
einfo "2. Edit /etc/conf.d/apache and add \"-D PHP4\" to APACHE_OPTS"
einfo "That will include the php mime types in your configuration"
einfo "automagically and setup Apache to load php when it starts."
fi
}
pkg_config() {
multiinstwarn
if [ -n "${USE_APACHE2}" ] ; then
apache2msg
else
${ROOT}/usr/sbin/apacheaddmod \
${ROOT}/etc/apache/conf/apache.conf \
extramodules/libphp4.so mod_php4.c php4_module \
before=perl define=PHP4 addconf=conf/addon-modules/mod_php.conf
:;
fi
}
|