]> git.pld-linux.org Git - packages/php.git/blame - dep-tests.sh
Merge 4:5.3.28-7, 4:5.6.4-2 triggers for rpm 4.16
[packages/php.git] / dep-tests.sh
CommitLineData
c638a5d4 1#!/bin/sh
2# inter-dependencies checker.
3
4with_mysqlnd=mysqlnd
5
77ab4842
ER
6dep_session=""
7dep_filter=''
c638a5d4 8dep_eaccelerator='session'
77ab4842 9dep_mysqlnd=''
cc302397 10dep_mysql="$dep_mysqlnd $with_mysqlnd"
77ab4842
ER
11dep_mysqli="$dep_mysqlnd $with_mysqlnd"
12dep_pdo=""
c638a5d4 13dep_pdo_sqlite="$dep_pdo pdo"
14dep_pdo_pgsql="$dep_pdo pdo"
15dep_pdo_oci="$dep_pdo pdo"
16dep_pdo_odbc="$dep_pdo pdo"
17dep_pdo_firebird="$dep_pdo pdo"
18dep_pdo_dblib="$dep_pdo pdo"
cc302397 19dep_pdo_mysql="$dep_pdo pdo $dep_mysqlnd $with_mysqlnd"
77ab4842
ER
20dep_simplexml=""
21dep_imap=""
22dep_phar=""
c638a5d4 23dep_sqlite="$dep_pdo pdo"
77ab4842 24dep_fileinfo=""
c638a5d4 25dep_wddx='xml'
26dep_xmlreader='dom'
27dep_xmlrpc='xml'
28dep_xsl='dom'
77ab4842
ER
29dep_snmp="snmp"
30dep_opcache=''
c638a5d4 31
32php=${PHP:-$(php-config --php-binary)}
33ext_dir=${EXTENSION_DIR:-$(php-config --extension-dir)}
34conf_dir=${CONFIG_DIR:-$(php-config --sysconfdir)/conf.d $(php-config --sysconfdir)/cli.d}
93d946f2
ER
35
36test_deps() {
37 tmpini=$(mktemp)
38
39 # poldek --sn ac-ready -u php-*
40 for ext in ${*:-$ext_dir/*.so}; do
41 [ -f $ext ] || continue
42 ext=${ext##*/}; ext=${ext%.so}
43
44 deps=$(eval echo \$dep_$ext)
45 # add ext itself, if already not in list (spl case)
46 [[ $deps = *\ $ext\ * ]] || deps="$deps $ext"
47
48 echo -n "$ext (deps: ${deps# })..."
49
50 # special: opcache is listed as "Zend Opcache"
51 [ "$ext" = "opcache" ] && ext="zend opcache"
52
f320f3d7 53 grep -rlE '^(zend_)?extension=('$(echo "${deps# }" | tr ' ' '|')')$' $conf_dir | LC_ALL=C sort | xargs cat > $tmpini
93d946f2
ER
54 $php -n -d extension_dir=$ext_dir -c $tmpini -r "exit(extension_loaded('${ext}') ? 0 : 1);"
55 rc=$?
56 if [ $rc = 0 ]; then
57 echo OK
58 else
59 echo FAIL
60 echo "Failed config was:"
61 cat $tmpini
62 fi
63 done
64}
65
f320f3d7
ER
66_resolve_extension_deps() {
67 local name="$1"
68
69 eval echo \$dep_$ext
70}
71
72# Prints a load order (0-based integer) for the given extension name. Extension
73# with lower load order should be loaded before exts with higher load order.
74# It's based on number of dependencies of the extension (with exception for
75# "imap"), which is flawed, but simple and good enough for now.
76#
77# _extension_load_order adopted from alpine linux:
78# https://github.com/alpinelinux/aports/blob/v3.10.1/community/php7/APKBUILD#L639-L653
79_extension_load_order() {
80 local name="$1"
81 local deps=$(eval "echo \$dep_$name")
82
83 case "$name" in
84 # XXX: This must be loaded after recode, even though it does
85 # not depend on it. So we must use this hack...
86 imap) echo 1;;
87 *) echo "${deps:=$(_resolve_extension_deps $name)}" | wc -w;;
88 esac
89}
90
91generate_ini() {
92 local load_order
93
94 rm -rf conf.d
95 install -d conf.d
96 for module in ${*:-$ext_dir/*.so}; do
97 [ -f $module ] || continue
98 extname=${module##*/}; extname=${extname%.so}
99
100 ext=extension
101 # opcache.so is zend extension
102 nm $module | grep -q zend_extension_entry && ext=zend_extension
103
104 load_order=$(_extension_load_order "$extname")
105 cat > conf.d/$(printf %02d $load_order)_$extname.ini <<-EOF
106 ; Enable $extname $ext module
107 $ext=$extname
108 EOF
109 done
110}
111
112if [ -n "$GENERATE_INI" ]; then
113 generate_ini "$@"
114else
115 test_deps "$@"
116fi
This page took 0.073645 seconds and 4 git commands to generate.