setup-php 2.17.1 → 2.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +27 -11
- package/lib/config.js +5 -1
- package/lib/config.js.map +1 -1
- package/lib/coverage.js +5 -1
- package/lib/coverage.js.map +1 -1
- package/lib/extensions.js +10 -6
- package/lib/extensions.js.map +1 -1
- package/lib/fetch.js +5 -1
- package/lib/fetch.js.map +1 -1
- package/lib/install.js +8 -4
- package/lib/install.js.map +1 -1
- package/lib/tools.js +29 -15
- package/lib/tools.js.map +1 -1
- package/lib/utils.js +5 -1
- package/lib/utils.js.map +1 -1
- package/package.json +19 -20
- package/src/configs/brew_extensions +2 -0
- package/src/extensions.ts +8 -8
- package/src/fetch.ts +2 -1
- package/src/install.ts +3 -3
- package/src/scripts/darwin.sh +30 -9
- package/src/scripts/extensions/add_extensions.sh +24 -9
- package/src/scripts/extensions/couchbase.sh +64 -31
- package/src/scripts/extensions/http.ps1 +1 -0
- package/src/scripts/extensions/http.sh +9 -5
- package/src/scripts/extensions/source.sh +14 -1
- package/src/scripts/extensions/sqlsrv.sh +9 -0
- package/src/scripts/linux.sh +13 -3
- package/src/scripts/tools/add_tools.sh +1 -0
- package/src/scripts/tools/protoc.ps1 +2 -2
- package/src/scripts/tools/protoc.sh +2 -2
- package/src/scripts/unix.sh +8 -8
- package/src/tools.ts +18 -8
package/src/extensions.ts
CHANGED
|
@@ -39,7 +39,7 @@ export async function addExtensionDarwin(
|
|
|
39
39
|
case /^(5\.[3-6]|7\.[0-4]|8\.[0-1])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
40
40
|
version_extension
|
|
41
41
|
):
|
|
42
|
-
case /^couchbase
|
|
42
|
+
case /^couchbase|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(
|
|
43
43
|
extension
|
|
44
44
|
):
|
|
45
45
|
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
|
@@ -78,7 +78,7 @@ export async function addExtensionDarwin(
|
|
|
78
78
|
// match 7.1 and newer - pcov
|
|
79
79
|
// match 5.6 to 7.4 - propro
|
|
80
80
|
// match 7.0 and newer - vips, xlswriter
|
|
81
|
-
case /(?<!5\.[3-5])(amqp|apcu|expect|gnupg|grpc|igbinary|imagick|imap|mailparse|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|ssh2|swoole|xdebug|xdebug2|yaml|zmq)/.test(
|
|
81
|
+
case /(?<!5\.[3-5])(amqp|apcu|expect|gnupg|grpc|igbinary|imagick|imap|mailparse|mcrypt|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|ssh2|swoole|xdebug|xdebug2|yaml|zmq)/.test(
|
|
82
82
|
version_extension
|
|
83
83
|
):
|
|
84
84
|
case /(5\.6|7\.[0-4])propro/.test(version_extension):
|
|
@@ -128,19 +128,19 @@ export async function addExtensionWindows(
|
|
|
128
128
|
case /^none$/.test(ext_name):
|
|
129
129
|
add_script += '\nDisable-AllShared';
|
|
130
130
|
break;
|
|
131
|
-
// match 5.3blackfire...8.
|
|
132
|
-
// match 5.3blackfire-(semver)...8.
|
|
131
|
+
// match 5.3blackfire...8.1blackfire
|
|
132
|
+
// match 5.3blackfire-(semver)...8.1blackfire-(semver)
|
|
133
133
|
// match pdo_oci and oci8
|
|
134
134
|
// match 5.3ioncube...7.4ioncube
|
|
135
135
|
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
|
136
|
-
// match 7.1pecl_http...8.
|
|
137
|
-
case /^(5\.[3-6]|7\.[0-4]|8\.
|
|
136
|
+
// match 7.1pecl_http...8.1pecl_http and 7.1http...8.1http
|
|
137
|
+
case /^(5\.[3-6]|7\.[0-4]|8\.1)blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
138
138
|
version_extension
|
|
139
139
|
):
|
|
140
140
|
case /^pdo_oci$|^oci8$|^pdo_firebird$/.test(extension):
|
|
141
141
|
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
|
142
142
|
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
|
143
|
-
case /^(7\.[1-4]|8\.
|
|
143
|
+
case /^(7\.[1-4]|8\.1)(pecl_)?http/.test(version_extension):
|
|
144
144
|
add_script += await utils.customPackage(
|
|
145
145
|
ext_name,
|
|
146
146
|
'extensions',
|
|
@@ -262,7 +262,7 @@ export async function addExtensionLinux(
|
|
|
262
262
|
case /^((5\.[3-6])|(7\.[0-2]))pdo_cubrid$|^((5\.[3-6])|(7\.[0-4]))cubrid$/.test(
|
|
263
263
|
version_extension
|
|
264
264
|
):
|
|
265
|
-
case /^couchbase
|
|
265
|
+
case /^couchbase|^gearman$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(
|
|
266
266
|
extension
|
|
267
267
|
):
|
|
268
268
|
case /(?<!5\.[3-5])intl-[\d]+\.[\d]+$/.test(version_extension):
|
package/src/fetch.ts
CHANGED
|
@@ -3,10 +3,11 @@ import * as https from 'https';
|
|
|
3
3
|
import * as url from 'url';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* Function to fetch
|
|
6
|
+
* Function to fetch a URL
|
|
7
7
|
*
|
|
8
8
|
* @param input_url
|
|
9
9
|
* @param auth_token
|
|
10
|
+
* @param redirect_count
|
|
10
11
|
*/
|
|
11
12
|
export async function fetch(
|
|
12
13
|
input_url: string,
|
package/src/install.ts
CHANGED
|
@@ -14,7 +14,7 @@ import * as utils from './utils';
|
|
|
14
14
|
* @param os
|
|
15
15
|
*/
|
|
16
16
|
export async function getScript(os: string): Promise<string> {
|
|
17
|
-
const url = 'https://setup-php.com/
|
|
17
|
+
const url = 'https://setup-php.com/support-ukraine';
|
|
18
18
|
const filename = os + (await utils.scriptExtension(os));
|
|
19
19
|
const script_path = path.join(__dirname, '../src/scripts', filename);
|
|
20
20
|
const run_path = script_path.replace(os, 'run');
|
|
@@ -40,8 +40,8 @@ export async function getScript(os: string): Promise<string> {
|
|
|
40
40
|
if (ini_values_csv) {
|
|
41
41
|
script += await config.addINIValues(ini_values_csv, os);
|
|
42
42
|
}
|
|
43
|
-
script += '\n' + (await utils.stepLog(
|
|
44
|
-
script += '\n' + (await utils.addLog('$tick', '
|
|
43
|
+
script += '\n' + (await utils.stepLog(`#StandWithUkraine`, os));
|
|
44
|
+
script += '\n' + (await utils.addLog('$tick', 'read-more', url, os));
|
|
45
45
|
|
|
46
46
|
fs.writeFileSync(run_path, script, {mode: 0o755});
|
|
47
47
|
|
package/src/scripts/darwin.sh
CHANGED
|
@@ -28,7 +28,7 @@ disable_extension_helper() {
|
|
|
28
28
|
disable_extension_dependents "$extension"
|
|
29
29
|
fi
|
|
30
30
|
sudo sed -Ei '' "/=(.*\/)?\"?$extension(.so)?$/d" "${ini_file:?}"
|
|
31
|
-
sudo rm -rf "$scan_dir"/*"$extension"*
|
|
31
|
+
sudo rm -rf "$scan_dir"/*"$extension"* /tmp/php"$version"_extensions
|
|
32
32
|
mkdir -p /tmp/extdisabled/"$version"
|
|
33
33
|
echo '' | sudo tee /tmp/extdisabled/"$version"/"$extension" >/dev/null 2>&1
|
|
34
34
|
}
|
|
@@ -60,12 +60,33 @@ add_brew_tap() {
|
|
|
60
60
|
fi
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
# Function to get extension name from brew formula.
|
|
64
|
+
get_extension_from_formula() {
|
|
65
|
+
local formula=$1
|
|
66
|
+
local extension
|
|
67
|
+
extension=$(grep "$formula=" "$src"/configs/brew_extensions | cut -d '=' -f 2)
|
|
68
|
+
[[ -z "$extension" ]] && extension="$(echo "$formula" | sed -E "s/pecl_|[0-9]//g")"
|
|
69
|
+
echo "$extension"
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
# Function to copy extension binaries to the extension directory.
|
|
73
|
+
copy_brew_extensions() {
|
|
74
|
+
local formula=$1
|
|
75
|
+
formula_file="$tap_dir/$ext_tap/Formula/$formula@$version.rb"
|
|
76
|
+
deps="$(grep -Eo 'depends_on "shivammathur[^"]+' "$formula_file" | cut -d '/' -f 3 | tr '\n' ' ')"
|
|
77
|
+
IFS=' ' read -r -a deps <<< "$formula@$version $deps"
|
|
78
|
+
for dependency in "${deps[@]}"; do
|
|
79
|
+
extension_file="$brew_prefix/opt/$dependency/$(get_extension_from_formula "${dependency%@*}").so"
|
|
80
|
+
[ -e "$extension_file" ] && sudo cp "$extension_file" "$ext_dir"
|
|
81
|
+
done
|
|
82
|
+
sudo find -- "$brew_prefix"/Cellar/"$formula"@"$version" -name "*.dylib" -exec cp {} "$ext_dir" \;
|
|
83
|
+
}
|
|
84
|
+
|
|
63
85
|
# Function to install a php extension from shivammathur/extensions tap.
|
|
64
86
|
add_brew_extension() {
|
|
65
87
|
formula=$1
|
|
66
88
|
prefix=$2
|
|
67
|
-
extension
|
|
68
|
-
[[ -z "$extension" ]] && extension="$(echo "$formula" | sed -E "s/pecl_|[0-9]//g")"
|
|
89
|
+
extension="$(get_extension_from_formula "$formula")"
|
|
69
90
|
enable_extension "$extension" "$prefix"
|
|
70
91
|
if check_extension "$extension"; then
|
|
71
92
|
add_log "${tick:?}" "$extension" "Enabled"
|
|
@@ -75,8 +96,8 @@ add_brew_extension() {
|
|
|
75
96
|
sudo mv "$tap_dir"/"$ext_tap"/.github/deps/"$formula"/* "$core_repo/Formula/" 2>/dev/null || true
|
|
76
97
|
update_dependencies >/dev/null 2>&1
|
|
77
98
|
disable_dependency_extensions "$extension" >/dev/null 2>&1
|
|
78
|
-
brew install -f "$formula@$version" >/dev/null 2>&1
|
|
79
|
-
|
|
99
|
+
brew install -f "$ext_tap/$formula@$version" >/dev/null 2>&1
|
|
100
|
+
copy_brew_extensions "$formula"
|
|
80
101
|
add_extension_log "$extension" "Installed and enabled"
|
|
81
102
|
fi
|
|
82
103
|
}
|
|
@@ -122,10 +143,10 @@ link_libraries() {
|
|
|
122
143
|
# Patch brew to overwrite packages.
|
|
123
144
|
patch_brew() {
|
|
124
145
|
formula_installer="$brew_repo"/Library/Homebrew/formula_installer.rb
|
|
125
|
-
code=" keg.link(verbose: verbose
|
|
126
|
-
sudo sed -
|
|
146
|
+
code=" keg.link\(verbose: verbose\?"
|
|
147
|
+
sudo sed -Ei '' "s/$code.*/$code, overwrite: true\)/" "$formula_installer"
|
|
127
148
|
# shellcheck disable=SC2064
|
|
128
|
-
trap "sudo sed -
|
|
149
|
+
trap "sudo sed -Ei '' 's/$code.*/$code, overwrite: overwrite?\)/' $formula_installer" exit
|
|
129
150
|
}
|
|
130
151
|
|
|
131
152
|
# Helper function to update the dependencies.
|
|
@@ -137,9 +158,9 @@ update_dependencies_helper() {
|
|
|
137
158
|
|
|
138
159
|
# Function to update dependencies.
|
|
139
160
|
update_dependencies() {
|
|
161
|
+
patch_brew
|
|
140
162
|
if ! [ -e /tmp/update_dependencies ]; then
|
|
141
163
|
if [ "${runner:?}" != "self-hosted" ] && [ "${ImageOS:-}" != "" ] && [ "${ImageVersion:-}" != "" ]; then
|
|
142
|
-
patch_brew
|
|
143
164
|
while read -r dependency; do
|
|
144
165
|
update_dependencies_helper "$dependency" &
|
|
145
166
|
to_wait+=($!)
|
|
@@ -8,10 +8,14 @@ add_extension_log() {
|
|
|
8
8
|
# Function to test if extension is loaded.
|
|
9
9
|
check_extension() {
|
|
10
10
|
local extension=$1
|
|
11
|
+
local extension_list=/tmp/php${version:?}_extensions
|
|
12
|
+
if [ ! -e "$extension_list" ]; then
|
|
13
|
+
php -m > "$extension_list"
|
|
14
|
+
fi
|
|
11
15
|
if [ "$extension" != "mysql" ]; then
|
|
12
|
-
php -m | grep -i -q -w "$extension"
|
|
16
|
+
grep -i -q -w "$extension" "$extension_list" || php -m | grep -i -q -w "$extension"
|
|
13
17
|
else
|
|
14
|
-
php -m | grep -i -q "$extension"
|
|
18
|
+
grep -i -q "$extension" "$extension_list" || php -m | grep -i -q "$extension"
|
|
15
19
|
fi
|
|
16
20
|
}
|
|
17
21
|
|
|
@@ -26,7 +30,8 @@ enable_cache_extension_dependencies() {
|
|
|
26
30
|
cache_dir=$(find /tmp/extcache -maxdepth 1 -type d -regex ".*$1[0-9]*")
|
|
27
31
|
if [[ -n "$cache_dir" ]]; then
|
|
28
32
|
IFS=" " read -r -a deps <<<"$(find "$cache_dir" -maxdepth 1 -type f -name "*" -exec basename {} \; | tr '\n' ' ')"
|
|
29
|
-
|
|
33
|
+
IFS="#" read -r -a deps_enable <<<"$(printf -- "-d ${2}=%s.so#" "${deps[@]}")"
|
|
34
|
+
if [[ -n "${deps[*]}" ]] && php "${deps_enable[@]}" -d "${2}=$1.so" -m 2>/dev/null | grep -i -q "$1"; then
|
|
30
35
|
for ext in "${deps[@]}"; do
|
|
31
36
|
sudo rm -rf /tmp/extcache/"$ext"
|
|
32
37
|
enable_extension "$ext" "$2"
|
|
@@ -38,11 +43,11 @@ enable_cache_extension_dependencies() {
|
|
|
38
43
|
|
|
39
44
|
# Function to enable existing extensions.
|
|
40
45
|
enable_extension() {
|
|
41
|
-
modules_dir="/var/lib/php/modules/${version:?}"
|
|
42
|
-
[ -d "$modules_dir" ] && sudo find "$modules_dir" -path "*disabled*$1" -delete
|
|
43
|
-
enable_extension_dependencies "$1" "$2"
|
|
44
|
-
enable_cache_extension_dependencies "$1" "$2"
|
|
45
46
|
if ! check_extension "$1" && shared_extension "$1"; then
|
|
47
|
+
modules_dir="/var/lib/php/modules/${version:?}"
|
|
48
|
+
[ -d "$modules_dir" ] && sudo find "$modules_dir" -path "*disabled*$1" -delete
|
|
49
|
+
enable_extension_dependencies "$1" "$2"
|
|
50
|
+
enable_cache_extension_dependencies "$1" "$2"
|
|
46
51
|
echo "$2=${ext_dir:?}/$1.so" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null
|
|
47
52
|
fi
|
|
48
53
|
}
|
|
@@ -60,7 +65,7 @@ enable_extensions() {
|
|
|
60
65
|
|
|
61
66
|
# Function to get a map of extensions and their dependent shared extensions.
|
|
62
67
|
get_extension_map() {
|
|
63
|
-
php -d'error_reporting=0' "${src:?}"/scripts/extensions/extension_map.php /tmp/map"$version".orig
|
|
68
|
+
php -d'error_reporting=0' "${src:?}"/scripts/extensions/extension_map.php /tmp/map"$version".orig >/dev/null 2>&1
|
|
64
69
|
}
|
|
65
70
|
|
|
66
71
|
# Function to enable extension dependencies which are also extensions.
|
|
@@ -108,6 +113,7 @@ disable_all_shared() {
|
|
|
108
113
|
sudo sed -i.orig -E -e "/^(zend_)?extension\s*=/d" "${ini_file[@]}" "$pecl_file" 2>/dev/null || true
|
|
109
114
|
sudo find "${ini_dir:-$scan_dir}"/.. -name "*.ini" -not -path "*php.ini" -not -path "*phar.ini" -not -path "*pecl.ini" -not -path "*mods-available*" -delete >/dev/null 2>&1 || true
|
|
110
115
|
mkdir -p /tmp/extdisabled/"$version"
|
|
116
|
+
sudo rm -f /tmp/php"$version"_extensions
|
|
111
117
|
sudo find "$ext_dir" -name '*.so' -print0 | xargs -0 -n 1 basename -s .so | xargs -n 1 -I{} touch /tmp/extdisabled/"$version"/{}
|
|
112
118
|
add_log "${tick:?}" "none" "Disabled all shared extensions"
|
|
113
119
|
}
|
|
@@ -152,7 +158,16 @@ get_pecl_version() {
|
|
|
152
158
|
pecl_install() {
|
|
153
159
|
local extension=$1
|
|
154
160
|
add_pecl >/dev/null 2>&1
|
|
155
|
-
|
|
161
|
+
cpu_count="$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo '1')"
|
|
162
|
+
prefix_opts="$(parse_args "$extension" CONFIGURE_PREFIX_OPTS) MAKEFLAGS='-j $cpu_count'"
|
|
163
|
+
suffix_opts="$(parse_args "$extension" CONFIGURE_OPTS) $(parse_args "$extension" CONFIGURE_SUFFIX_OPTS)"
|
|
164
|
+
IFS=' ' read -r -a libraries <<<"$(parse_args "$extension" LIBS) $(parse_args "$extension" "$(uname -s)"_LIBS)"
|
|
165
|
+
(( ${#libraries[@]} )) && add_libs "${libraries[@]}" >/dev/null 2>&1
|
|
166
|
+
if [ "$version" = "5.3" ]; then
|
|
167
|
+
yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f "$extension" >/dev/null 2>&1
|
|
168
|
+
else
|
|
169
|
+
yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f -D "$(parse_pecl_configure_options "$suffix_opts")" "$extension" >/dev/null 2>&1
|
|
170
|
+
fi
|
|
156
171
|
}
|
|
157
172
|
|
|
158
173
|
# Function to install a specific version of PECL extension.
|
|
@@ -1,43 +1,76 @@
|
|
|
1
1
|
# Function to install libraries required by couchbase
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
else
|
|
8
|
-
release="$(curl -sL $trunk/latest | grep -Eo "libcouchbase-[0-9]+\.[0-9]+\.[0-9]+" | head -n 1 | cut -d'-' -f 2)"
|
|
9
|
-
fi
|
|
10
|
-
deb_url="$trunk/download/$release/libcouchbase-${release}_ubuntu${VERSION_ID/./}_${VERSION_CODENAME}_amd64.tar"
|
|
11
|
-
get -q -n /tmp/libcouchbase.tar "$deb_url"
|
|
12
|
-
sudo tar -xf /tmp/libcouchbase.tar -C /tmp
|
|
13
|
-
install_packages libev4 libevent-dev
|
|
14
|
-
sudo dpkg -i /tmp/libcouchbase-*/*.deb
|
|
2
|
+
add_couchbase_clibs() {
|
|
3
|
+
ext=$1
|
|
4
|
+
trunk="https://github.com/couchbase/libcouchbase/releases"
|
|
5
|
+
if [[ "$ext" =~ couchbase-2.+ ]]; then
|
|
6
|
+
release="2.10.9"
|
|
15
7
|
else
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
8
|
+
release="$(curl -sL $trunk/latest | grep -Eo "libcouchbase-[0-9]+\.[0-9]+\.[0-9]+" | head -n 1 | cut -d'-' -f 2)"
|
|
9
|
+
fi
|
|
10
|
+
[ "$VERSION_ID" = "22.04" ] && vid=20.04 || vid="$VERSION_ID"
|
|
11
|
+
[ "$VERSION_CODENAME" = "jammy" ] && vcn=focal || vcn="$VERSION_CODENAME"
|
|
12
|
+
deb_url="$trunk/download/$release/libcouchbase-${release}_ubuntu${vid/./}_${vcn}_amd64.tar"
|
|
13
|
+
get -q -n /tmp/libcouchbase.tar "$deb_url"
|
|
14
|
+
sudo tar -xf /tmp/libcouchbase.tar -C /tmp
|
|
15
|
+
install_packages libev4 libevent-dev
|
|
16
|
+
sudo dpkg -i /tmp/libcouchbase-*/*.deb
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
add_couchbase_cxxlibs() {
|
|
20
|
+
if [ "$VERSION_ID" = "18.04" ]; then
|
|
21
|
+
if ! command -v gcc-8 >/dev/null || ! command -v g++-8 >/dev/null; then
|
|
22
|
+
install_packages gcc-8 g++-8 -y
|
|
21
23
|
fi
|
|
24
|
+
printf "gcc g++" | xargs -d ' ' -I {} sudo update-alternatives --install /usr/bin/{} {} /usr/bin/{}-8 8
|
|
25
|
+
fi
|
|
26
|
+
if [ "${runner:?}" = "self-hosted" ]; then
|
|
27
|
+
add_list cmake https://apt.kitware.com/ubuntu/ https://apt.kitware.com/keys/kitware-archive-latest.asc "$VERSION_CODENAME" main
|
|
28
|
+
fi
|
|
29
|
+
install_packages cmake ccache
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
get_couchbase_version() {
|
|
33
|
+
if [[ "${version:?}" =~ ${old_versions:?} ]]; then
|
|
34
|
+
echo couchbase-2.2.3
|
|
35
|
+
elif [[ "${version:?}" =~ 5.6|7.[0-1] ]]; then
|
|
36
|
+
echo couchbase-2.6.2
|
|
37
|
+
elif [ "${version:?}" = '7.2' ]; then
|
|
38
|
+
echo couchbase-3.0.4
|
|
39
|
+
elif [ "${version:?}" = '7.3' ]; then
|
|
40
|
+
echo couchbase-3.2.2
|
|
41
|
+
else
|
|
42
|
+
echo couchbase
|
|
22
43
|
fi
|
|
23
44
|
}
|
|
24
45
|
|
|
25
46
|
# Function to add couchbase.
|
|
26
47
|
add_couchbase() {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if [[ "$
|
|
33
|
-
|
|
34
|
-
elif [[ "${version:?}" =~ 5.6|7.[0-1] ]]; then
|
|
35
|
-
pecl_install couchbase-2.6.2 >/dev/null 2>&1
|
|
36
|
-
elif [[ "${version:?}" =~ 7.2 ]]; then
|
|
37
|
-
pecl_install couchbase-3.0.4 >/dev/null 2>&1
|
|
48
|
+
ext=$1
|
|
49
|
+
if [ "$(uname -s)" = "Linux" ]; then
|
|
50
|
+
if [ "$ext" = "couchbase" ]; then
|
|
51
|
+
ext=$(get_couchbase_version)
|
|
52
|
+
fi
|
|
53
|
+
if [[ "$ext" =~ couchbase-[2-3].+ ]]; then
|
|
54
|
+
add_couchbase_clibs "$ext" >/dev/null 2>&1
|
|
38
55
|
else
|
|
39
|
-
|
|
56
|
+
add_couchbase_cxxlibs >/dev/null 2>&1
|
|
57
|
+
fi
|
|
58
|
+
enable_extension "couchbase" "extension"
|
|
59
|
+
if check_extension "couchbase"; then
|
|
60
|
+
add_log "${tick:?}" "couchbase" "Enabled"
|
|
61
|
+
else
|
|
62
|
+
if [ "$ext" = "couchbase" ]; then
|
|
63
|
+
ext="couchbase-$(get_pecl_version "couchbase" "stable")"
|
|
64
|
+
add_extension_from_source couchbase https://pecl.php.net couchbase couchbase "${ext##*-}" extension pecl >/dev/null 2>&1
|
|
65
|
+
else
|
|
66
|
+
pecl_install "${ext}" >/dev/null 2>&1
|
|
67
|
+
fi
|
|
68
|
+
add_extension_log "couchbase" "Installed and enabled"
|
|
69
|
+
fi
|
|
70
|
+
else
|
|
71
|
+
if [ -e "${ext_dir:?}"/libcouchbase_php_core.dylib ]; then
|
|
72
|
+
sudo cp "${ext_dir:?}"/libcouchbase_php_core.dylib ${brew_prefix:?}/lib
|
|
40
73
|
fi
|
|
41
|
-
|
|
74
|
+
add_brew_extension couchbase extension
|
|
42
75
|
fi
|
|
43
76
|
}
|
|
@@ -11,10 +11,11 @@ get_http_version() {
|
|
|
11
11
|
|
|
12
12
|
# Function to enable http extension.
|
|
13
13
|
enable_http() {
|
|
14
|
+
enable_extension iconv extension
|
|
14
15
|
enable_extension propro extension
|
|
15
16
|
enable_extension raphf extension
|
|
16
|
-
if (! [[ ${version:?} =~ ${jit_versions:?} ]] && check_extension propro && check_extension raphf) ||
|
|
17
|
-
( [[ ${version:?} =~ ${jit_versions:?} ]] && check_extension raphf); then
|
|
17
|
+
if (! [[ ${version:?} =~ ${jit_versions:?} ]] && check_extension iconv && check_extension propro && check_extension raphf) ||
|
|
18
|
+
( [[ ${version:?} =~ ${jit_versions:?} ]] && check_extension iconv && check_extension raphf); then
|
|
18
19
|
enable_extension http extension
|
|
19
20
|
fi
|
|
20
21
|
}
|
|
@@ -25,10 +26,12 @@ add_http_dependencies() {
|
|
|
25
26
|
add_pecl_extension raphf 1.1.2 extension
|
|
26
27
|
add_pecl_extension propro 1.0.2 extension
|
|
27
28
|
elif [[ ${version:?} =~ 5.6|7.[0-4] ]]; then
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
add_extension iconv extension
|
|
30
|
+
add_extension propro extension
|
|
31
|
+
add_extension raphf extension
|
|
30
32
|
else
|
|
31
|
-
|
|
33
|
+
add_extension iconv extension
|
|
34
|
+
add_extension raphf extension
|
|
32
35
|
fi
|
|
33
36
|
}
|
|
34
37
|
|
|
@@ -88,6 +91,7 @@ add_http_version() {
|
|
|
88
91
|
ext=$1
|
|
89
92
|
enable_http
|
|
90
93
|
if [ "x$(php -r "echo phpversion('http');")" != "x${ext##*-}" ]; then
|
|
94
|
+
add_http_dependencies
|
|
91
95
|
disable_extension_helper http >/dev/null
|
|
92
96
|
add_http_helper pecl_http-"${ext##*-}" "$os"
|
|
93
97
|
status="Installed and enabled"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Function to parse extension environment variables
|
|
2
2
|
parse_args() {
|
|
3
|
-
local extension=$1
|
|
3
|
+
local extension=${1%-*}
|
|
4
4
|
suffix=$(echo "$2" | tr '[:lower:]' '[:upper:]')
|
|
5
5
|
up_ext_name=$(echo "$extension" | tr '[:lower:]' '[:upper:]')
|
|
6
6
|
var="${extension}_${suffix}"
|
|
@@ -10,6 +10,19 @@ parse_args() {
|
|
|
10
10
|
echo "$output" | xargs -n 1 | sort | uniq | xargs
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
# Function to parse configure options for pecl
|
|
14
|
+
# Make sure we have all options in name="value" form i.e XML properties.
|
|
15
|
+
parse_pecl_configure_options() {
|
|
16
|
+
configure_opts=$(echo "$1" | sed -r -e "s#['\"]|--##g")
|
|
17
|
+
IFS=' ' read -r -a opts_array <<< "$configure_opts"
|
|
18
|
+
output_opts=()
|
|
19
|
+
for opt in "${opts_array[@]}"; do
|
|
20
|
+
[ "${opt##*=}" != "${opt%=*}" ] && value="${opt##*=}" || value=yes
|
|
21
|
+
output_opts+=("${opt%=*}=\"$value\"")
|
|
22
|
+
done
|
|
23
|
+
echo "${output_opts[@]}"
|
|
24
|
+
}
|
|
25
|
+
|
|
13
26
|
# Function to log if a library is installed
|
|
14
27
|
add_lib_log() {
|
|
15
28
|
local lib=$1
|
|
@@ -7,9 +7,18 @@ get_sqlsrv_version() {
|
|
|
7
7
|
fi
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
add_unixodbc() {
|
|
11
|
+
if [ "$(uname -s)" = 'Linux' ]; then
|
|
12
|
+
install_packages unixodbc-dev
|
|
13
|
+
else
|
|
14
|
+
brew install unixodbc
|
|
15
|
+
fi
|
|
16
|
+
}
|
|
17
|
+
|
|
10
18
|
# Function to install sqlsrv and pdo_sqlsrv.
|
|
11
19
|
add_sqlsrv() {
|
|
12
20
|
ext=$1
|
|
13
21
|
ext_version=$(get_sqlsrv_version)
|
|
22
|
+
add_unixodbc >/dev/null 2>&1
|
|
14
23
|
add_pecl_extension "$ext" "$ext_version" extension
|
|
15
24
|
}
|
package/src/scripts/linux.sh
CHANGED
|
@@ -31,6 +31,7 @@ disable_extension_helper() {
|
|
|
31
31
|
fi
|
|
32
32
|
sudo sed -Ei "/=(.*\/)?\"?$extension(.so)?$/d" "${ini_file[@]}" "$pecl_file"
|
|
33
33
|
sudo find "$ini_dir"/.. -name "*$extension.ini" -not -path "*phar.ini" -not -path "*pecl.ini" -not -path "*mods-available*" -delete >/dev/null 2>&1 || true
|
|
34
|
+
sudo rm -f /tmp/php"$version"_extensions
|
|
34
35
|
mkdir -p /tmp/extdisabled/"$version"
|
|
35
36
|
echo '' | sudo tee /tmp/extdisabled/"$version"/"$extension" >/dev/null 2>&1
|
|
36
37
|
}
|
|
@@ -115,8 +116,14 @@ add_pecl() {
|
|
|
115
116
|
|
|
116
117
|
# Function to switch versions of PHP binaries.
|
|
117
118
|
switch_version() {
|
|
118
|
-
tools=("$@")
|
|
119
|
+
tools=("$@")
|
|
119
120
|
to_wait=()
|
|
121
|
+
if ! (( ${#tools[@]} )); then
|
|
122
|
+
tools+=(pear pecl php phar phar.phar php-cgi php-config phpize phpdbg)
|
|
123
|
+
[ -e /usr/lib/cgi-bin/php"$version" ] && sudo update-alternatives --set php-cgi-bin /usr/lib/cgi-bin/php"$version" & to_wait+=($!)
|
|
124
|
+
[ -e /usr/sbin/php-fpm"$version" ] && sudo update-alternatives --set php-fpm /usr/sbin/php-fpm"$version" & to_wait+=($!)
|
|
125
|
+
[ -e /run/php/php"$version"-fpm.sock ] && sudo update-alternatives --set php-fpm.sock /run/php/php"$version"-fpm.sock & to_wait+=($!)
|
|
126
|
+
fi
|
|
120
127
|
for tool in "${tools[@]}"; do
|
|
121
128
|
if [ -e "/usr/bin/$tool$version" ]; then
|
|
122
129
|
sudo update-alternatives --set "$tool" /usr/bin/"$tool$version" &
|
|
@@ -168,7 +175,10 @@ link_pecl_file() {
|
|
|
168
175
|
echo '' | sudo tee "$pecl_file" >/dev/null 2>&1
|
|
169
176
|
for file in "${ini_file[@]}"; do
|
|
170
177
|
sapi_scan_dir="$(realpath -m "$(dirname "$file")")/conf.d"
|
|
171
|
-
[ "$sapi_scan_dir" != "$scan_dir" ] && ! [ -h "$sapi_scan_dir" ]
|
|
178
|
+
if [ "$sapi_scan_dir" != "$scan_dir" ] && ! [ -h "$sapi_scan_dir" ]; then
|
|
179
|
+
sudo mkdir -p "$sapi_scan_dir"
|
|
180
|
+
sudo ln -sf "$pecl_file" "$sapi_scan_dir/99-pecl.ini"
|
|
181
|
+
fi
|
|
172
182
|
done
|
|
173
183
|
}
|
|
174
184
|
|
|
@@ -206,7 +216,7 @@ setup_php() {
|
|
|
206
216
|
sudo mkdir -m 777 -p /var/run /run/php
|
|
207
217
|
php_config="$(command -v php-config)"
|
|
208
218
|
if [[ -z "$php_config" ]] || [ "$(php_semver | cut -c 1-3)" != "$version" ]; then
|
|
209
|
-
if [ ! -e "/usr/bin/php$version" ]; then
|
|
219
|
+
if [ ! -e "/usr/bin/php$version" ] || [ ! -e "/usr/bin/php-config$version" ]; then
|
|
210
220
|
add_php >/dev/null 2>&1
|
|
211
221
|
else
|
|
212
222
|
if ! [[ "$version" =~ ${old_versions:?} ]]; then
|
|
@@ -142,6 +142,7 @@ add_composertool_helper() {
|
|
|
142
142
|
scoped_dir="$composer_bin/_tools/$tool-$(echo -n "$release" | shasum -a 256 | cut -d ' ' -f 1)"
|
|
143
143
|
if ! [ -d "$scoped_dir" ]; then
|
|
144
144
|
mkdir -p "$scoped_dir"
|
|
145
|
+
echo '{}' | tee "$scoped_dir/composer.json" >/dev/null
|
|
145
146
|
composer require "$prefix$release" -d "$scoped_dir" "$composer_args" >/dev/null 2>&1
|
|
146
147
|
composer show "$prefix$tool" -d "$scoped_dir" 2>&1 | grep -E ^versions | sudo tee /tmp/composer.log >/dev/null 2>&1
|
|
147
148
|
fi
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Function Get-ProtobufTag() {
|
|
2
2
|
if("$protobuf_tag" -eq "latest") {
|
|
3
|
-
$protobuf_tag = (Invoke-RestMethod https://api.github.com/repos/protocolbuffers/protobuf/
|
|
3
|
+
$protobuf_tag = (Invoke-RestMethod https://api.github.com/repos/protocolbuffers/protobuf/releases).tag_name | Where-Object { $_ -match "v\d+.\d+.\d+$" } | Select-Object -First 1
|
|
4
4
|
} else {
|
|
5
5
|
try {
|
|
6
6
|
[net.httpWebRequest] $request = [net.webRequest]::create("https://github.com/protocolbuffers/protobuf/releases/tag/v$protobuf_tag")
|
|
@@ -9,7 +9,7 @@ Function Get-ProtobufTag() {
|
|
|
9
9
|
$response.Close()
|
|
10
10
|
$protobuf_tag = "v$protobuf_tag"
|
|
11
11
|
} catch {
|
|
12
|
-
$protobuf_tag = (Invoke-RestMethod https://api.github.com/repos/protocolbuffers/protobuf/
|
|
12
|
+
$protobuf_tag = (Invoke-RestMethod https://api.github.com/repos/protocolbuffers/protobuf/releases).tag_name | Where-Object { $_ -match "v\d+.\d+.\d+$" } | Select-Object -First 1
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
return $protobuf_tag
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
get_protobuf_tag() {
|
|
2
2
|
if [ "$protobuf_tag" = "latest" ]; then
|
|
3
|
-
protobuf_tag=$(get -s -n "" https://github.com/protocolbuffers/protobuf/releases/latest 2<&1 | grep -m 1 -Eo "(v[0-9]
|
|
3
|
+
protobuf_tag=$(get -s -n "" https://github.com/protocolbuffers/protobuf/releases/latest 2<&1 | grep -m 1 -Eo "tag/(v[0-9]+(\.[0-9]+)?(\.[0-9]+)?)" | head -n 1 | cut -d '/' -f 2)
|
|
4
4
|
else
|
|
5
5
|
status_code=$(get -v -n /tmp/protobuf.tmp "https://github.com/protocolbuffers/protobuf/releases/tag/v$protobuf_tag")
|
|
6
6
|
if [ "$status_code" = "200" ]; then
|
|
7
7
|
protobuf_tag="v$protobuf_tag"
|
|
8
8
|
else
|
|
9
|
-
protobuf_tag=$(get -s -n "" https://github.com/protocolbuffers/protobuf/releases/latest 2<&1 | grep -m 1 -Eo "(v[0-9]
|
|
9
|
+
protobuf_tag=$(get -s -n "" https://github.com/protocolbuffers/protobuf/releases/latest 2<&1 | grep -m 1 -Eo "tag/(v[0-9]+(\.[0-9]+)?(\.[0-9]+)?)" | head -n 1 | cut -d '/' -f 2)
|
|
10
10
|
fi
|
|
11
11
|
fi
|
|
12
12
|
}
|
package/src/scripts/unix.sh
CHANGED
|
@@ -21,15 +21,15 @@ fi
|
|
|
21
21
|
|
|
22
22
|
# Function to log start of a operation.
|
|
23
23
|
step_log() {
|
|
24
|
-
message=$1
|
|
24
|
+
local message=$1
|
|
25
25
|
printf "\n\033[90;1m==> \033[0m\033[37;1m%s\033[0m\n" "$message"
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
# Function to log result of a operation.
|
|
29
29
|
add_log() {
|
|
30
|
-
mark=$1
|
|
31
|
-
subject=$2
|
|
32
|
-
message=$3
|
|
30
|
+
local mark=$1
|
|
31
|
+
local subject=$2
|
|
32
|
+
local message=$3
|
|
33
33
|
if [ "$mark" = "$tick" ]; then
|
|
34
34
|
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
|
35
35
|
else
|
|
@@ -159,10 +159,10 @@ self_hosted_setup() {
|
|
|
159
159
|
configure_php() {
|
|
160
160
|
add_php_config
|
|
161
161
|
ini_config_dir="${src:?}"/configs/ini
|
|
162
|
-
|
|
163
|
-
[[ "$version" =~ $jit_versions ]] &&
|
|
164
|
-
[[ "$version" =~ $xdebug3_versions ]] &&
|
|
165
|
-
cat "${
|
|
162
|
+
ini_config_files=("$ini_config_dir"/php.ini)
|
|
163
|
+
[[ "$version" =~ $jit_versions ]] && ini_config_files+=("$ini_config_dir"/jit.ini)
|
|
164
|
+
[[ "$version" =~ $xdebug3_versions ]] && ini_config_files+=("$ini_config_dir"/xdebug.ini)
|
|
165
|
+
cat "${ini_config_files[@]}" | sudo tee -a "${ini_file[@]:?}" >/dev/null 2>&1
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
# Function to get PHP version in semver format.
|
package/src/tools.ts
CHANGED
|
@@ -230,24 +230,34 @@ export async function addBlackfirePlayer(data: RS): Promise<string> {
|
|
|
230
230
|
* @param data
|
|
231
231
|
*/
|
|
232
232
|
export async function addComposer(data: RS): Promise<string> {
|
|
233
|
+
const channel = data['version'].replace('latest', 'stable');
|
|
233
234
|
const github = data['github'];
|
|
234
235
|
const getcomposer = data['domain'];
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
}
|
|
236
|
+
const cds = 'https://dl.cloudsmith.io';
|
|
237
|
+
const filename = `composer-${data['php_version']}-${channel}.phar`;
|
|
238
|
+
const releases_url = `${github}/shivammathur/composer-cache/releases/latest/download/${filename}`;
|
|
239
|
+
const cds_url = `${cds}/public/shivammathur/composer-cache/raw/files/${filename}`;
|
|
240
|
+
const lts_url = `${getcomposer}/download/latest-2.2.x/composer.phar`;
|
|
241
|
+
const is_lts = /^5\.[3-6]$|^7\.[0-1]$/.test(data['php_version']);
|
|
242
|
+
const version_source_url = `${getcomposer}/composer-${channel}.phar`;
|
|
243
|
+
let cache_url = `${releases_url},${cds_url}`;
|
|
238
244
|
let source_url = `${getcomposer}/composer.phar`;
|
|
239
245
|
switch (true) {
|
|
240
|
-
case /^snapshot$/.test(
|
|
246
|
+
case /^snapshot$/.test(channel):
|
|
247
|
+
source_url = is_lts ? lts_url : source_url;
|
|
241
248
|
break;
|
|
242
|
-
case /^preview$|^
|
|
243
|
-
source_url =
|
|
249
|
+
case /^preview$|^2$/.test(channel):
|
|
250
|
+
source_url = is_lts ? lts_url : version_source_url;
|
|
251
|
+
break;
|
|
252
|
+
case /^1$/.test(channel):
|
|
253
|
+
source_url = version_source_url;
|
|
244
254
|
break;
|
|
245
255
|
case /^\d+\.\d+\.\d+[\w-]*$/.test(data['version']):
|
|
246
256
|
cache_url = `${github}/${data['repository']}/releases/download/${data['version']}/composer.phar`;
|
|
247
|
-
source_url =
|
|
257
|
+
source_url = version_source_url;
|
|
248
258
|
break;
|
|
249
259
|
default:
|
|
250
|
-
source_url =
|
|
260
|
+
source_url = is_lts ? lts_url : version_source_url;
|
|
251
261
|
}
|
|
252
262
|
const use_cache: boolean = (await utils.readEnv('NO_TOOLS_CACHE')) !== 'true';
|
|
253
263
|
data['url'] = use_cache ? `${cache_url},${source_url}` : source_url;
|