@@ -6,18 +6,18 @@ WGET_BIN=$($WHICH_BIN wget)
66TAR_BIN=$( $WHICH_BIN tar)
77
88NPROC=$( $WHICH_BIN nproc)
9- MAKE_OPTS=" -s "
9+ MAKE_OPTS=(-s)
1010if [ " $NPROC " != " " ]; then
11- MAKE_OPTS= " ${MAKE_OPTS} -j$( $NPROC ) "
11+ MAKE_OPTS+=( -j$( $NPROC ) )
1212fi
1313declare -A PHP_BAND_CUSTOM_PECL_EXTENSIONS
1414declare -A PHP_BAND_CUSTOM_EXTERNAL_EXTENSIONS
1515
1616error_exit () {
17- local msg=$1
17+ local msg=" $1 "
1818 local code=$2
1919 echo -e " \033[41;37m$msg \033[0m"
20- [ -n $code ] || code=1
20+ [ -n " $code " ] || code=1
2121 exit $code
2222}
2323
@@ -27,18 +27,18 @@ php_band_multicommand_error() {
2727
2828php_band_unimplemented () {
2929 echo -e " \033[45;37mUnimplemented $1 \033[0m"
30- [ -f " $base_config_file .sh" ] && source " $base_config_file .sh" ${version_components[@]}
3130}
3231
3332log_info () {
3433 echo -e " \033[0;30m$1 \033[0m"
3534}
3635
3736php_band_check_env () {
38- [ " " != " $WHICH_BIN " -a -x " $WHICH_BIN " ] || error_exit " No which binary" 1
39- [ " " != " $WGET_BIN " -a -x " $WGET_BIN " ] || error_exit " No wget binary" 1
40- [ " " != " $SED_BIN " -a -x " $SED_BIN " ] || error_exit " No sed binary" 1
41- [ " " != " $TAR_BIN " -a -x " $TAR_BIN " ] || error_exit " No tar binary" 1
37+ # shellcheck disable=SC2015
38+ [ " " != " $WHICH_BIN " ] && [ -x " $WHICH_BIN " ] || error_exit " No which binary" 1
39+ [ " " != " $WGET_BIN " ] || [ -x " $WGET_BIN " ] || error_exit " No wget binary" 1
40+ [ " " != " $SED_BIN " ] || [ -x " $SED_BIN " ] || error_exit " No sed binary" 1
41+ [ " " != " $TAR_BIN " ] || [ -x " $TAR_BIN " ] || error_exit " No tar binary" 1
4242 [ -d " ${PHP_BAND_ASSETS_DIR} " ] || error_exit " The asset directory '${PHP_BAND_ASSETS_DIR} ' does not exist"
4343 [ -d " $PHP_BAND_ARCH_DIR " ] || mkdir " ${PHP_BAND_ARCH_DIR} "
4444 [ -d " $PHP_BAND_CONFIG_DIR " ] || mkdir " ${PHP_BAND_CONFIG_DIR} "
@@ -47,19 +47,20 @@ php_band_check_env() {
4747}
4848
4949php_band_parse_version () {
50- local ver=$1
50+ local ver=" $1 "
5151 php_version_major=${ver%% .* }
5252 ver=${ver# $php_version_major .}
5353 php_version_minor=${ver%% .* }
5454 ver=${ver# $php_version_minor .}
5555 php_version_patch=$( echo " $ver " | $SED_BIN -E ' s/([0-9]+).*/\1/' )
5656 ver=${ver# $php_version_patch }
5757 php_version_addon=$ver
58- if [ $( printf " %s.%s.%s%s" " $php_version_major " " $php_version_minor " " $php_version_patch " " $php_version_addon " ) != " $1 " ]; then
58+ if [ " $( printf " %s.%s.%s%s" " $php_version_major " " $php_version_minor " " $php_version_patch " " $php_version_addon " ) " != " $1 " ]; then
5959 php_version_major=" "
6060 fi
6161}
6262# utilities
63+ # shellcheck disable=SC2034
6364php_band_apply_shell_expansion () {
6465 declare data=$1
6566 declare PHP_BAND_DOLLAR=' $'
@@ -81,7 +82,7 @@ php_band_substitute() {
8182
8283# check for source
8384php_band_build_source_filename () {
84- printf " php-%s.%s.%s%s.tar.%s" " $php_version_major " " $php_version_minor " " $php_version_patch " " $php_version_addon " " $php_band_source_archive_format "
85+ printf " php-%s.%s.%s%s.tar.%s" " $php_version_major " " $php_version_minor " " $php_version_patch " " $php_version_addon " " ${ php_band_source_archive_format:? } "
8586}
8687
8788php_band_build_php_source_dirname () {
@@ -101,18 +102,19 @@ php_band_check_newer() {
101102 rm " ${refFile} "
102103 fi
103104}
104-
105+ # shellcheck disable=SC1090 disable=SC2086
105106get_per_version_config () {
106- local base_config_file=$( basename " $1 " )
107- local config_dir=$( dirname " $1 " )
108- local refFile=" $PHP_BAND_SOURCE_DIR /" $( php_band_build_php_source_dirname) " /.configured"
107+ local base_config_file config_dir refFile
108+ base_config_file=" $( basename " $1 " ) "
109+ config_dir=" $( dirname " $1 " ) "
110+ refFile=" $PHP_BAND_SOURCE_DIR /$( php_band_build_php_source_dirname) /.configured"
109111 shift
110112 local x=" $* "
111113 if [ -f " $config_dir /${base_config_file} " ]; then
112114 source " $config_dir /$base_config_file " $x
113115 php_band_check_newer " ${refFile} " " ${config_dir} /${base_config_file} "
114116 fi
115- while [ $# -gt 0 -a " $1 " != " " ]; do
117+ while [ $# -gt 0 ] && [ " $1 " != " " ]; do
116118 config_dir=" $config_dir /$1 "
117119 if [ -f " $config_dir /${base_config_file} " ]; then
118120 source " $config_dir /${base_config_file} " $x
@@ -123,23 +125,26 @@ get_per_version_config() {
123125}
124126
125127php_band_configure_php () {
126- php_band_php_install_dir=" $PHP_BAND_INST_DIR /$php_version "
128+ php_band_php_install_dir=" $PHP_BAND_INST_DIR /${ php_version:? } "
127129 php_band_php_config_options=" --disable-all"
128130 get_per_version_config " $PHP_BAND_CONFIG_DIR /configure-php.sh" " $php_version_major " " $php_version_minor " " $php_version_patch " " $php_version_addon "
129131}
130132
131133php_band_check_for_source () {
132- local host
133- local srcfile
134- local php_band_archive_filename=$( php_band_build_source_filename)
134+ local host php_band_archive_filename srcfile
135+ php_band_archive_filename=$( php_band_build_source_filename)
135136 srcfile=" $PHP_BAND_ARCH_DIR /$php_band_archive_filename "
136- [ -f " $srcfile " ] && return
137- for i in ${php_prefered_sites[@]} ; do
137+ [ -f " $srcfile " ] && [ -s " $srcfile " ] && return
138+ for i in " ${php_prefered_sites:? [@]} " ; do
138139 host=$( php_band_apply_shell_expansion " ${i%% } " )
139140 log_info " Attempting to download from $host "
140141 $WGET_BIN -P " $PHP_BAND_ARCH_DIR " -O " $srcfile " " $host "
141- [ -f " $srcfile " ] && ! ($TAR_BIN -tf " $srcfile " >& /dev/null) && rm " $srcfile "
142142 if [ -f " $srcfile " ]; then
143+ if $TAR_BIN -tf " $srcfile " ; then
144+ rm " $srcfile "
145+ fi
146+ fi
147+ if [ -s " $srcfile " ]; then
143148 log_info " PHP $php_version has been downloaded"
144149 return
145150 fi
@@ -148,15 +153,17 @@ php_band_check_for_source() {
148153}
149154
150155php_band_extract_php_source () {
151- local php_band_archive_filename=$( php_band_build_source_filename)
156+ local php_band_archive_filename
157+ php_band_archive_filename=" $( php_band_build_source_filename) "
152158 [ -r " $PHP_BAND_ARCH_DIR /$php_band_archive_filename " ] || error_exit " The file $php_band_archive_filename is not readable" 3
153- $TAR_BIN -xf " $PHP_BAND_ARCH_DIR /$php_band_archive_filename " -C $PHP_BAND_SOURCE_DIR
159+ $TAR_BIN -xf " $PHP_BAND_ARCH_DIR /$php_band_archive_filename " -C " $PHP_BAND_SOURCE_DIR "
154160 [ $? -ne 0 ] && error_exit " $php_band_archive_filename does not seem to be a valid archive" 3
155161}
156162
163+ # shellcheck disable=SC2034
157164php_band_get_php_extension_dir () {
158165 if [ -x " ${php_band_php_install_dir} /bin/php-config" ]; then
159- php_band_php_extension_dir=$( ${php_band_php_install_dir} /bin/php-config --extension-dir)
166+ php_band_php_extension_dir=" $( " ${php_band_php_install_dir} " /bin/php-config --extension-dir) "
160167 else
161168 php_band_php_extension_dir=' '
162169 fi
@@ -179,26 +186,29 @@ php_band_pecl_remove_package() {
179186 echo " Package name is mandatory"
180187 return 1
181188 fi
182- unset PHP_BAND_CUSTOM_PECL_EXTENSIONS[$package ]
189+ unset PHP_BAND_CUSTOM_PECL_EXTENSIONS[" $package " ]
183190 return 0
184191}
185192
186193php_band_pecl_build_extension () {
187194 local ext_channel=" $1 "
188195 local user_input=" ${2} "
189196 log_info " Building pecl extension ${ext_channel} "
190- echo " ${user_input} " | ${php_band_php_install_dir} /bin/pecl install " ${ext_channel} " > /dev/null
197+ echo " ${user_input} " | " ${php_band_php_install_dir} " /bin/pecl install " ${ext_channel} " > /dev/null
191198 [ $? -eq 0 ] || log_info " Extension building failed"
192199}
193200
194201php_band_pecl_build () {
195- local cwd=" $( pwd) "
196- echo " Pecl Extensions to install : ${! PHP_BAND_CUSTOM_PECL_EXTENSIONS[@]} "
202+ local cwd
203+ cwd=" $( pwd) "
204+ echo " Pecl Extensions to install : ${! PHP_BAND_CUSTOM_PECL_EXTENSIONS[*]} "
197205 for pecl_channel in ${! PHP_BAND_CUSTOM_PECL_EXTENSIONS[*]} ; do
198206 echo " Pecl extension $pecl_channel requested"
199- cd " $cwd "
207+ # shellcheck disable=SC2164
208+ cd " $cwd "
200209 php_band_pecl_build_extension " $pecl_channel " " ${PHP_BAND_CUSTOM_PECL_EXTENSIONS[${pecl_channel}]} "
201210 done
211+ # shellcheck disable=SC2164
202212 cd " $cwd "
203213}
204214
@@ -224,15 +234,17 @@ php_band_external_remove() {
224234}
225235
226236php_band_external_build () {
227- local cwd=" $( pwd) "
228- echo " External Extensions to install : ${! PHP_BAND_CUSTOM_EXTERNAL_EXTENSIONS[@]} "
237+ local cwd
238+ cwd=" $( pwd) "
239+ echo " External Extensions to install : ${! PHP_BAND_CUSTOM_EXTERNAL_EXTENSIONS[*]} "
229240 for ext_et in ${! PHP_BAND_CUSTOM_EXTERNAL_EXTENSIONS[*]} ; do
230241 echo " Building extension $ext_et with ${PHP_BAND_CUSTOM_EXTERNAL_EXTENSIONS[$ext_et]} "
231- cd " $cwd "
242+ # shellcheck disable=SC2164
243+ cd " $cwd "
232244 command_to_run=" extension_${ext_et} "
233245 if [ " $( type -t " $command_to_run " ) " = " function" ]; then
234246 command_params=${PHP_BAND_CUSTOM_EXTERNAL_EXTENSIONS[$ext_et]}
235- $command_to_run ${command_params[@]}
247+ $command_to_run " ${command_params[@]} "
236248 fi
237249 done
238250}
@@ -266,7 +278,7 @@ post_install_php() {
266278php_band_compile_php () {
267279 echo " Installing $php_version "
268280 php_band_check_newer " .configured" " $0 "
269- cd " $PHP_BAND_SOURCE_DIR /" $( php_band_build_php_source_dirname)
281+ cd " $PHP_BAND_SOURCE_DIR /$( php_band_build_php_source_dirname) " || error_exit " Php source dir does not exist "
270282 php_band_configure_php
271283 if [ ! -f .configured ]; then
272284 pre_configure_php
@@ -282,7 +294,7 @@ php_band_compile_php() {
282294 if [ ! -f .built ]; then
283295 make clean
284296 pre_compile_php
285- make ${MAKE_OPTS}
297+ make " ${MAKE_OPTS[@]} "
286298 [ $? -eq 0 ] || error_exit " Compilation of php failed" 3
287299 post_compile_php
288300 touch .built
0 commit comments