Files
asdf-php/bin/install
2016-10-15 11:35:45 +02:00

137 lines
3.1 KiB
Bash

#!/usr/bin/env bash
set -o pipefail
install_php() {
local install_type=$1
local version=$2
local install_path=$3
if [ "$TMPDIR" = "" ]; then
local tmp_download_dir=$(mktemp -d)
else
local tmp_download_dir=${TMPDIR%/}
fi
local source_path=$(get_download_file_path $install_type $version $tmp_download_dir)
local configure_options="$(construct_configure_options $install_path)"
download_source $install_type $version $source_path
# Running this in a subshell because we don't to disturb the current
# working directory.
(
cd $(dirname $source_path)
tar -zxvf $source_path || exit 1
cd $(untar_path $install_type $version $tmp_download_dir)
# Target is OS-specific
# target=$(get_target)
# Build PHP
./buildconf --force || exit 1
./configure $configure_options || exit 1
make || exit 1
make test || exit 1
make install || exit 1
)
}
construct_configure_options() {
local install_path=$1
if [ "$PHP_CONFIGURE_OPTIONS" = "" ]; then
local configure_options="--prefix=$install_path"
else
local configure_options="$PHP_CONFIGURE_OPTIONS --prefix=$install_path"
fi
echo "$configure_options"
}
download_source() {
local install_type=$1
local version=$2
local download_path=$3
local download_url=$(get_download_url $install_type $version)
# curl -Lo $download_path -C - $download_url
curl -Lo $download_path $download_url
}
get_download_file_path() {
local install_type=$1
local version=$2
local tmp_download_dir=$3
local php_version=$(get_php_version $version)
local pkg_name="php-${php_version}.tar.gz"
echo "$tmp_download_dir/$pkg_name"
}
untar_path() {
local install_type=$1
local version=$2
local tmp_download_dir=$3
local php_version=$(get_php_version $version)
local dir_name="php-src-php-${php_version}"
echo "$tmp_download_dir/$dir_name"
}
get_download_url() {
local install_type=$1
local version=$2
echo "https://github.com/php/php-src/archive/php-${version}.tar.gz"
}
get_php_version() {
IFS='-' read -a version_info <<< "$1"
if [ "${#version_info[@]}" -eq 1 ]; then
echo "${version_info[0]}"
else
echo "${version_info[0]}-${version_info[1]}"
fi
}
# get_target() {
# os=$(uname -s)
#
# # If on OSX (Darwin) then the target is macosx
# if [ $os = "Darwin" ]; then
# echo "macosx"
# else # Otherwise we assume Linux
# echo "linux"
# fi
# }
#version_5x_or_greater() {
# version=$1
# IFS='.' read -a version_array <<< "$version"
# major_version="${version_array[0]}"
#
# if (( $major_version >= 5 )); then
# return 0
# else
# return 1
# fi
#}
#version_5_2x_or_greater() {
# version=$1
# IFS='.' read -a version_array <<< "$version"
# major_minor_version="${version_array[0]}0${version_array[1]}"
# if (( $major_minor_version >= 502 )); then
# return 0
# else
# return 1
# fi
#}
install_php $ASDF_INSTALL_TYPE $ASDF_INSTALL_VERSION $ASDF_INSTALL_PATH