php: fix native php when it is from sstate

the native php is used to install the target pear, and native php
has hard-code path, so make wrapper to override the hard-code path

the configuration format of pear.conf for native php is like:
"type:path length:path", path will be replaced when populate sysroot
setscene, but the path length is not changed, and make php unable to
work, add a task to SSTATEPOSTINSTFUNCS to fix the path length

Signed-off-by: Roy Li <rongqing.li@windriver.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
This commit is contained in:
Roy Li
2015-06-16 08:51:51 +08:00
committed by Martin Jansa
parent ac462c7e58
commit 622c960ea6

View File

@@ -245,3 +245,21 @@ MODPHP_OLDPACKAGE = "${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'modphp',
RPROVIDES_${PN}-modphp = "${MODPHP_OLDPACKAGE}"
RREPLACES_${PN}-modphp = "${MODPHP_OLDPACKAGE}"
RCONFLICTS_${PN}-modphp = "${MODPHP_OLDPACKAGE}"
do_install_append_class-native() {
create_wrapper ${D}${bindir}/php \
PHP_PEAR_SYSCONF_DIR=${sysconfdir}/
}
SSTATEPOSTINSTFUNCS_append_class-native = " php_sstate_postinst "
php_sstate_postinst() {
if [ "${BB_CURRENTTASK}" = "populate_sysroot_setscene" ]
then
head -n1 ${sysconfdir}/pear.conf > ${sysconfdir}/pear.tmp.conf
for p in `tail -n1 ${sysconfdir}/pear.conf | sed -s 's/;/ /g'`; do
echo $p | awk -F: 'BEGIN {OFS = ":"; ORS = ";"}{if(NF==3){print $1, length($3)-2*match($3, /^"/), $3} else {print $0}}';
done >> ${sysconfdir}/pear.tmp.conf
mv -f ${sysconfdir}/pear.tmp.conf ${sysconfdir}/pear.conf
fi
}