summaryrefslogtreecommitdiff
blob: 91bec5ff069f4b3f49b9f94532a4e6f7db35b100 (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
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_install-v2.eblit,v 1.7 2010/10/27 10:33:18 olemarkus Exp $

eblit-php-src_install() {
	# see bug #324739 for what happens when we don't have that
	addpredict /usr/share/snmp/mibs/.index

	# grab the first SAPI that got built and install common files from there
	local first_sapi=""
	for sapi in $SAPIS ; do
		if use $sapi ; then
			first_sapi=$sapi
			break
		fi
	done

	# Makefile forgets to create this before trying to write to it...
	dodir "${PHP_DESTDIR}/bin"

	# Install php environment (without any sapis)
	cd "${WORKDIR}/sapis-build/$first_sapi"
	emake INSTALL_ROOT="${D}" \
		install-build install-headers install-programs \
		|| die "emake install failed"

	local extension_dir="$("${D}/${PHP_DESTDIR}/bin/php-config" --extension-dir)"

	# And install the modules to it
	if use sharedext ; then
		insinto "${extension_dir}"
		doins "${WORKDIR}/sapis-build/${first_sapi}/modules/"*.so
	fi

	# Generate the USE file for PHP
	phpconfutils_generate_usefile

	# Create the directory where we'll put version-specific php scripts
	keepdir /usr/share/php${PHP_MV}

	local sapi="", file=""
	local sapi_list=""

	for sapi in ${SAPIS}; do
		if use "${sapi}" ; then
			einfo "Installing SAPI: ${sapi}"
			cd "${WORKDIR}/sapis-build/${sapi}"
			# needed each time, php_install_ini would reset it
			into "${PHP_DESTDIR}"
			file=$(find "${SAPI_DIR}/${sapi}/" -type f | head -n 1)

			if [[ "${file: -3}" == ".so" ]]; then 
				if [[ "${sapi}" == "apache2" ]]; then
					insinto "${PHP_DESTDIR}/apache2/"
					newins "${file}" "${file/*\/}"
				else
					dolib.so "${file}" || die "Unable to install ${sapi} sapi"
				fi
			else
				dobin "${file}" || die "Unable to install ${sapi} sapi"
			fi

			php_install_ini "${sapi}"

			# construct correct SAPI string for php-config
			# thanks to ferringb for the bash voodoo
			if [[ "${sapi}" == "apache2" ]]; then
			    sapi_list="${sapi_list:+${sapi_list} }apache2handler"
			else
				sapi_list="${sapi_list:+${sapi_list} }${sapi}"
			fi
		fi
	done

	# Install env.d files
	newenvd "${FILESDIR}/20php5-envd" \
		"20php${SLOT}"
	sed -e "s|/lib/|/$(get_libdir)/|g" -i \
		"${D}/etc/env.d/20php${SLOT}"
	sed -e "s|php5|php${SLOT}|g" -i \
		"${D}/etc/env.d/20php${SLOT}"

	# set php-config variable correctly (bug #278439)
	sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \
		"${D}/usr/$(get_libdir)/php${SLOT}/bin/php-config"
}

php_install_ini() {
	local phpsapi="${1}"

	# work out where we are installing the ini file
	php_set_ini_dir "${phpsapi}"

	local phpinisrc="${PHP_INI_UPSTREAM}-${phpsapi}"
	cp "${PHP_INI_UPSTREAM}" "${phpinisrc}"

	# default to allow_url_open=Off, bug 332763
	sed -e 's|^allow_url_fopen .*|allow_url_fopen = Off|g' -i "${phpinisrc}"

	# default to expose_php=Off, bug 300695
	sed -e 's|^expose_php .*|expose_php = Off|g' -i "${phpinisrc}"

	# default to /tmp for save_path, bug #282768
	sed -e 's|^;session.save_path .*$|session.save_path = "/tmp"|g' -i "${phpinisrc}"

	# Set the extension dir
	sed -e "s|^extension_dir .*$|extension_dir = ${extension_dir}|g" -i "${phpinisrc}"

	# Set the include path to point to where we want to find PEAR packages
	sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:/usr/share/php'${PHP_MV}':/usr/share/php"|' -i "${phpinisrc}"

	dodir "${PHP_INI_DIR}"
	insinto "${PHP_INI_DIR}"
	newins "${phpinisrc}" "${PHP_INI_FILE}"

	dodir "${PHP_EXT_INI_DIR}"
	dodir "${PHP_EXT_INI_DIR_ACTIVE}"

	# Install any extensions built as shared objects
	if use sharedext ; then
		insinto "${PHP_EXT_INI_DIR}"
		for extension in "${D}/${extension_dir}/"*.so ; do
			extension="${extension##*/}"
			inifilename="${extension/.so/.ini}"
			echo "extension=${extension}" > "${WORKDIR}/sapis-build/${phpsapi}/modules/$inifilename"
			doins "${WORKDIR}/sapis-build/${phpsapi}/modules/$inifilename"
			dosym "${PHP_EXT_INI_DIR}/${inifilename}" "${PHP_EXT_INI_DIR_ACTIVE}/${inifilename}"
		done
	fi

	# SAPI-specific handling
	if [[ "${sapi}" == "apache2" ]] ; then
			insinto "${APACHE_MODULES_CONFDIR}"
			newins "${FILESDIR}/70_mod_php${PHP_MV}.conf-apache2" \
				"70_mod_php${PHP_MV}.conf"
	fi

	if [[ "${sapi}" == "fpm" ]] ; then
		einfo "Installing FPM CGI config file php-fpm.conf"
		epatch "${FILESDIR}/php-fpm-gentooified.patch"
		insinto ${PHP_INI_DIR}
		doins "${WORKDIR}/sapis-build/fpm/sapi/fpm/php-fpm.conf"
		dodir "/etc/init.d"
		insinto "/etc/init.d"
		newinitd "${FILESDIR}/php-fpm-r1.init" "php-fpm"
#		dosym "${PHP_DESTDIR}/bin/php-fpm" "/usr/bin/php-fpm"
	fi
}