summaryrefslogtreecommitdiff
blob: e592109227ae3b2d69cb81898274204bc383cee4 (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
# 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.1 2010/05/27 23:05:04 mabi Exp $

eblit-php-src_install() {
	# Makefile forgets to create this before trying to write to it...
	dodir "${PHP_DESTDIR}/bin"

	# Install php environment (without any sapis)
	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 "${S}/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=""

	for sapi in ${SAPIS}; do
		if use "${sapi}" ; then
			einfo "Installing SAPI: ${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/modules/"
					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}"
		fi
	done

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

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 expose_php=Off, bug 300695
	sed -e 's|^expose_php .*|expose_php = Off|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}" > "${S}/modules/$inifilename"
			doins "${S}/modules/$inifilename"
			dosym "${PHP_EXT_INI_DIR}/${inifilename}" "${PHP_EXT_INI_DIR_ACTIVE}/${inifilename}"
		done
	fi

	# SAPI-specific handling
	if [[ "${sapi}" == "apache2" ]] ; then
		if use concurrentmodphp ; then
			einfo "Installing Apache2 config file 70_mod_php${PHP_MV}_concurr.conf"
			insinto "${APACHE_MODULES_CONFDIR}"
			newins "${FILESDIR}/70_mod_php${PHP_MV}_concurr.conf-apache2" \
				"70_mod_php${PHP_MV}_concurr.conf"

			# Put the ld version script in the right place so
			# it's always accessible
			insinto "/var/lib/php-pkg/${CATEGORY}/${PN}-${PVR}/"
			doins "${FILESDIR}/php${PHP_MV}-ldvs"
		else
			einfo "Installing Apache2 config 70_mod_php${PHP_MV}.conf)"
			insinto ${APACHE_MODULES_CONFDIR}
			newins "${FILESDIR}/70_mod_php${PHP_MV}.conf-apache2" \
				"70_mod_php${PHP_MV}.conf"
		fi
	fi
}