summaryrefslogtreecommitdiffstats
path: root/dev-lang/php/files/eblits/src_install-v2.eblit
blob: b0dd1aea347a8785f82edc361b6a08d945d1048e (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
# Copyright 1999-2011 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.14 2011/12/16 09:02:43 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

	# 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/*\/}"
                    keepdir "/usr/$(get_libdir)/apache2/modules"
				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}"

	elog "Installing php.ini for ${phpsapi} into ${PHP_INI_DIR}"
	elog

	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
        [[ -z ${PHP_FPM_INIT_VER} ]] && PHP_FPM_INIT_VER=3
        [[ -z ${PHP_FPM_CONF_VER} ]] && PHP_FPM_CONF_VER=0
		einfo "Installing FPM CGI config file php-fpm.conf"
		insinto ${PHP_INI_DIR}
		newins "${FILESDIR}/php-fpm-r${PHP_FPM_CONF_VER}.conf" php-fpm.conf
		dodir "/etc/init.d"
		insinto "/etc/init.d"
		newinitd "${FILESDIR}/php-fpm-r${PHP_FPM_INIT_VER}.init" "php-fpm"
		#dosym "${PHP_DESTDIR}/bin/php-fpm" "/usr/bin/php-fpm"
		
		# Remove bogus /etc/php-fpm.conf.default (bug 359906)
		[[ -f "${D}/etc/php-fpm.conf.default" ]] && rm "${D}/etc/php-fpm.conf.default"
	fi

  # Install PHP ini files into /usr/share/php
	if [[ ${SLOT} == '5.2' ]]; then
		newdoc php.ini-dist php.ini-development
		newdoc php.ini-recommended php.ini-production
	fi

	if [[ ${SLOT} == '5.3' ]]; then
		dodoc php.ini-development
		dodoc php.ini-production
	fi

}