setup-php 2.15.0 → 2.17.1
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/README.md +157 -143
- package/lib/config.d.ts +3 -3
- package/lib/config.js +71 -71
- package/lib/config.js.map +1 -1
- package/lib/coverage.d.ts +5 -4
- package/lib/coverage.js +97 -87
- package/lib/coverage.js.map +1 -1
- package/lib/extensions.d.ts +4 -4
- package/lib/extensions.js +214 -210
- package/lib/extensions.js.map +1 -1
- package/lib/fetch.d.ts +1 -0
- package/lib/fetch.js +63 -0
- package/lib/fetch.js.map +1 -0
- package/lib/install.d.ts +2 -2
- package/lib/install.js +75 -80
- package/lib/install.js.map +1 -1
- package/lib/tools.d.ts +23 -24
- package/lib/tools.js +373 -386
- package/lib/tools.js.map +1 -1
- package/lib/utils.d.ts +21 -23
- package/lib/utils.js +261 -293
- package/lib/utils.js.map +1 -1
- package/package.json +21 -20
- package/src/config.ts +8 -8
- package/src/configs/brew_extensions +2 -0
- package/src/configs/composer.env +2 -0
- package/src/configs/ini/jit.ini +3 -0
- package/src/configs/ini/php.ini +2 -0
- package/src/configs/ini/xdebug.ini +1 -0
- package/src/configs/os_releases.csv +2 -0
- package/src/configs/php-versions.json +2 -2
- package/src/configs/php_packages +12 -0
- package/src/configs/{php.json → pm/php.json} +0 -0
- package/src/configs/{phpunit.json → pm/phpunit.json} +24 -24
- package/src/configs/tools.json +48 -26
- package/src/configs/tools_schema.json +11 -0
- package/src/coverage.ts +47 -55
- package/src/extensions.ts +23 -19
- package/src/fetch.ts +54 -0
- package/src/install.ts +27 -40
- package/src/scripts/darwin.sh +72 -39
- package/src/scripts/extensions/add_extensions.ps1 +194 -0
- package/src/scripts/extensions/add_extensions.sh +184 -0
- package/src/scripts/{ext → extensions}/blackfire.ps1 +0 -0
- package/src/scripts/{ext → extensions}/blackfire.sh +0 -0
- package/src/scripts/{ext → extensions}/couchbase.sh +0 -0
- package/src/scripts/{ext → extensions}/cubrid.sh +3 -3
- package/src/scripts/{ext → extensions}/extension_map.php +36 -13
- package/src/scripts/{ext → extensions}/firebird.ps1 +0 -0
- package/src/scripts/{ext → extensions}/firebird.sh +0 -0
- package/src/scripts/{ext → extensions}/gearman.sh +0 -0
- package/src/scripts/{ext → extensions}/geos.sh +0 -0
- package/src/scripts/{ext → extensions}/http.ps1 +0 -0
- package/src/scripts/{ext → extensions}/http.sh +4 -15
- package/src/scripts/{ext → extensions}/intl.sh +0 -0
- package/src/scripts/{ext → extensions}/ioncube.ps1 +2 -2
- package/src/scripts/{ext → extensions}/ioncube.sh +2 -2
- package/src/scripts/{ext → extensions}/oci.ps1 +39 -14
- package/src/scripts/{ext → extensions}/oci.sh +3 -3
- package/src/scripts/{ext → extensions}/patches/firebird.sh +0 -0
- package/src/scripts/{ext → extensions}/patches/geos.sh +0 -0
- package/src/scripts/{ext → extensions}/patches/http.sh +0 -0
- package/src/scripts/{ext → extensions}/patches/pdo_oci.sh +0 -0
- package/src/scripts/{ext → extensions}/patches/phpize.sh +0 -0
- package/src/scripts/{ext → extensions}/patches/protobuf.sh +0 -0
- package/src/scripts/{ext → extensions}/phalcon.ps1 +0 -0
- package/src/scripts/{ext → extensions}/phalcon.sh +4 -5
- package/src/scripts/{ext → extensions}/source.sh +23 -22
- package/src/scripts/extensions/sqlsrv.sh +15 -0
- package/src/scripts/linux.sh +71 -40
- package/src/scripts/tools/add_tools.ps1 +220 -10
- package/src/scripts/tools/add_tools.sh +166 -15
- package/src/scripts/tools/blackfire.sh +2 -1
- package/src/scripts/tools/grpc_php_plugin.ps1 +4 -4
- package/src/scripts/tools/grpc_php_plugin.sh +3 -3
- package/src/scripts/tools/ppa.sh +12 -9
- package/src/scripts/tools/protoc.ps1 +2 -2
- package/src/scripts/tools/protoc.sh +2 -2
- package/src/scripts/tools/symfony.ps1 +18 -0
- package/src/scripts/tools/symfony.sh +18 -0
- package/src/scripts/unix.sh +186 -0
- package/src/scripts/win32.ps1 +145 -356
- package/src/tools.ts +62 -82
- package/src/utils.ts +57 -145
- package/lib/sapi.js +0 -64
- package/src/scripts/common.sh +0 -366
package/lib/sapi.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.addSAPI = exports.getSapiList = void 0;
|
|
23
|
-
const utils = __importStar(require("./utils"));
|
|
24
|
-
async function getSapiList(sapi_csv) {
|
|
25
|
-
const sapi_list = await utils.packageArray(sapi_csv);
|
|
26
|
-
const servers = sapi_list.filter(sapi => /.*:.*/.test(sapi));
|
|
27
|
-
return [servers[servers.length - 1]].concat(sapi_list.filter(sapi => /.*[^:].*/.test(sapi)));
|
|
28
|
-
}
|
|
29
|
-
exports.getSapiList = getSapiList;
|
|
30
|
-
/**
|
|
31
|
-
* Function to set sapi
|
|
32
|
-
*
|
|
33
|
-
* @param sapi_csv
|
|
34
|
-
* @param os_version
|
|
35
|
-
*/
|
|
36
|
-
async function addSAPI(sapi_csv, os_version) {
|
|
37
|
-
let script = '\n' + (await utils.stepLog('Setup SAPI', os_version));
|
|
38
|
-
let sapi_list;
|
|
39
|
-
switch (true) {
|
|
40
|
-
case sapi_csv.split(':').length - 1 > 1:
|
|
41
|
-
sapi_list = await getSapiList(sapi_csv);
|
|
42
|
-
script +=
|
|
43
|
-
'\n' +
|
|
44
|
-
utils.log('Multiple SAPI with web servers specified, choosing the last one ' +
|
|
45
|
-
sapi_list[0], os_version, 'warning');
|
|
46
|
-
break;
|
|
47
|
-
default:
|
|
48
|
-
sapi_list = await utils.packageArray(sapi_csv);
|
|
49
|
-
}
|
|
50
|
-
await utils.asyncForEach(sapi_list, async function (sapi) {
|
|
51
|
-
sapi = sapi.toLowerCase();
|
|
52
|
-
switch (os_version) {
|
|
53
|
-
case 'linux':
|
|
54
|
-
case 'darwin':
|
|
55
|
-
script += '\nadd_sapi ' + sapi;
|
|
56
|
-
break;
|
|
57
|
-
case 'win32':
|
|
58
|
-
script += '\nAdd-Sapi ' + sapi;
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
return script;
|
|
63
|
-
}
|
|
64
|
-
exports.addSAPI = addSAPI;
|
package/src/scripts/common.sh
DELETED
|
@@ -1,366 +0,0 @@
|
|
|
1
|
-
# Variables
|
|
2
|
-
export tick="✓"
|
|
3
|
-
export cross="✗"
|
|
4
|
-
export curl_opts=(-sL)
|
|
5
|
-
export old_versions="5.[3-5]"
|
|
6
|
-
export jit_versions="8.[0-9]"
|
|
7
|
-
export nightly_versions="8.[1-9]"
|
|
8
|
-
export xdebug3_versions="7.[2-4]|8.[0-9]"
|
|
9
|
-
export tool_path_dir="/usr/local/bin"
|
|
10
|
-
export composer_home="$HOME/.composer"
|
|
11
|
-
export composer_bin="$composer_home/vendor/bin"
|
|
12
|
-
export composer_json="$composer_home/composer.json"
|
|
13
|
-
export composer_lock="$composer_home/composer.lock"
|
|
14
|
-
export latest="releases/latest/download"
|
|
15
|
-
export github="https://github.com/shivammathur"
|
|
16
|
-
export jsdeliver="https://cdn.jsdelivr.net/gh/shivammathur"
|
|
17
|
-
|
|
18
|
-
# Function to log start of a operation.
|
|
19
|
-
step_log() {
|
|
20
|
-
message=$1
|
|
21
|
-
printf "\n\033[90;1m==> \033[0m\033[37;1m%s\033[0m\n" "$message"
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
# Function to log result of a operation.
|
|
25
|
-
add_log() {
|
|
26
|
-
mark=$1
|
|
27
|
-
subject=$2
|
|
28
|
-
message=$3
|
|
29
|
-
if [ "$mark" = "$tick" ]; then
|
|
30
|
-
printf "\033[32;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
|
31
|
-
else
|
|
32
|
-
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s\033[0m\n" "$mark" "$subject" "$message"
|
|
33
|
-
[ "$fail_fast" = "true" ] && exit 1
|
|
34
|
-
fi
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
# Function to log result of installing extension.
|
|
38
|
-
add_extension_log() {
|
|
39
|
-
(
|
|
40
|
-
check_extension "$(echo "$1" | cut -d '-' -f 1)" && add_log "$tick" "$1" "$2"
|
|
41
|
-
) || add_log "$cross" "$1" "Could not install $1 on PHP ${semver:?}"
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
# Function to read env inputs.
|
|
45
|
-
read_env() {
|
|
46
|
-
[[ -z "${update}" ]] && update='false' && UPDATE='false' || update="${update}"
|
|
47
|
-
[ "$update" = false ] && [[ -n ${UPDATE} ]] && update="${UPDATE}"
|
|
48
|
-
[[ -z "${runner}" ]] && runner='github' && RUNNER='github' || runner="${runner}"
|
|
49
|
-
[ "$runner" = false ] && [[ -n ${RUNNER} ]] && runner="${RUNNER}"
|
|
50
|
-
[[ -z "${fail_fast}" ]] && fail_fast='false' || fail_fast="${fail_fast}"
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
# Function to download a file using cURL.
|
|
54
|
-
# mode: -s pipe to stdout, -v save file and return status code
|
|
55
|
-
# execute: -e save file as executable
|
|
56
|
-
get() {
|
|
57
|
-
mode=$1
|
|
58
|
-
execute=$2
|
|
59
|
-
file_path=$3
|
|
60
|
-
shift 3
|
|
61
|
-
links=("$@")
|
|
62
|
-
if [ "$mode" = "-s" ]; then
|
|
63
|
-
sudo curl "${curl_opts[@]}" "${links[0]}"
|
|
64
|
-
else
|
|
65
|
-
for link in "${links[@]}"; do
|
|
66
|
-
status_code=$(sudo curl -w "%{http_code}" -o "$file_path" "${curl_opts[@]}" "$link")
|
|
67
|
-
[ "$status_code" = "200" ] && break
|
|
68
|
-
done
|
|
69
|
-
[ "$execute" = "-e" ] && sudo chmod a+x "$file_path"
|
|
70
|
-
[ "$mode" = "-v" ] && echo "$status_code"
|
|
71
|
-
fi
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
# Function to download and run scripts from GitHub releases with jsdeliver fallback.
|
|
75
|
-
run_script() {
|
|
76
|
-
repo=$1
|
|
77
|
-
shift
|
|
78
|
-
args=("$@")
|
|
79
|
-
get -q -e /tmp/install.sh "$github/$repo/$latest/install.sh" "$jsdeliver/$1@main/scripts/install.sh"
|
|
80
|
-
bash /tmp/install.sh "${args[@]}"
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
# Function to install required packages on self-hosted runners.
|
|
84
|
-
self_hosted_setup() {
|
|
85
|
-
if [ "$runner" = "self-hosted" ]; then
|
|
86
|
-
if [[ "${version:?}" =~ $old_versions ]]; then
|
|
87
|
-
add_log "$cross" "PHP" "PHP $version is not supported on self-hosted runner"
|
|
88
|
-
exit 1
|
|
89
|
-
else
|
|
90
|
-
self_hosted_helper >/dev/null 2>&1
|
|
91
|
-
fi
|
|
92
|
-
fi
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
# Function to test if extension is loaded.
|
|
96
|
-
check_extension() {
|
|
97
|
-
local extension=$1
|
|
98
|
-
if [ "$extension" != "mysql" ]; then
|
|
99
|
-
php -m | grep -i -q -w "$extension"
|
|
100
|
-
else
|
|
101
|
-
php -m | grep -i -q "$extension"
|
|
102
|
-
fi
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
# Function to check if extension is shared
|
|
106
|
-
shared_extension() {
|
|
107
|
-
[ -e "${ext_dir:?}/$1.so" ]
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
# Function to enable cached extension's dependencies.
|
|
111
|
-
enable_cache_extension_dependencies() {
|
|
112
|
-
if [ -d /tmp/extcache ] && shared_extension "$1"; then
|
|
113
|
-
cache_dir=$(find /tmp/extcache -maxdepth 1 -type d -regex ".*$1[0-9]*")
|
|
114
|
-
if [[ -n "$cache_dir" ]]; then
|
|
115
|
-
IFS=" " read -r -a deps <<<"$(find "$cache_dir" -maxdepth 1 -type f -name "*" -exec basename {} \; | tr '\n' ' ')"
|
|
116
|
-
if [[ -n "${deps[*]}" ]] && php "${deps[@]/#/-d ${2}=}" -d "${2}=$1" -m 2>/dev/null | grep -i -q "$1"; then
|
|
117
|
-
for ext in "${deps[@]}"; do
|
|
118
|
-
sudo rm -rf /tmp/extcache/"$ext"
|
|
119
|
-
enable_extension "$ext" "$2"
|
|
120
|
-
done
|
|
121
|
-
fi
|
|
122
|
-
fi
|
|
123
|
-
fi
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
# Function to enable existing extensions.
|
|
127
|
-
enable_extension() {
|
|
128
|
-
modules_dir="/var/lib/php/modules/$version"
|
|
129
|
-
[ -d "$modules_dir" ] && sudo find "$modules_dir" -path "*disabled*$1" -delete
|
|
130
|
-
enable_extension_dependencies "$1" "$2"
|
|
131
|
-
enable_cache_extension_dependencies "$1" "$2"
|
|
132
|
-
if ! check_extension "$1" && shared_extension "$1"; then
|
|
133
|
-
echo "$2=${ext_dir:?}/$1.so" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null
|
|
134
|
-
fi
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
# Function to get a map of extensions and their dependent shared extensions.
|
|
138
|
-
get_extension_map() {
|
|
139
|
-
php -d'error_reporting=0' "${dist:?}"/../src/scripts/ext/extension_map.php
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
# Function to enable extension dependencies which are also extensions.
|
|
143
|
-
enable_extension_dependencies() {
|
|
144
|
-
local extension=$1
|
|
145
|
-
prefix=$2
|
|
146
|
-
if ! [ -e /tmp/map.orig ]; then
|
|
147
|
-
get_extension_map | sudo tee /tmp/map.orig >/dev/null
|
|
148
|
-
fi
|
|
149
|
-
for dependency in $(grep "$extension:" /tmp/map.orig | cut -d ':' -f 2 | tr '\n' ' '); do
|
|
150
|
-
enable_extension "$dependency" "$prefix"
|
|
151
|
-
done
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
# Function to disable dependent extensions.
|
|
155
|
-
disable_extension_dependents() {
|
|
156
|
-
local extension=$1
|
|
157
|
-
for dependent in $(get_extension_map | grep -E ".*:.*\s$extension(\s|$)" | cut -d ':' -f 1 | tr '\n' ' '); do
|
|
158
|
-
disable_extension_helper "$dependent" true
|
|
159
|
-
add_log "${tick:?}" ":$extension" "Disabled $dependent as it depends on $extension"
|
|
160
|
-
done
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
# Function to disable an extension.
|
|
164
|
-
disable_extension() {
|
|
165
|
-
local extension=$1
|
|
166
|
-
if check_extension "$extension"; then
|
|
167
|
-
if shared_extension "$extension"; then
|
|
168
|
-
disable_extension_helper "$extension" true
|
|
169
|
-
(! check_extension "$extension" && add_log "${tick:?}" ":$extension" "Disabled") ||
|
|
170
|
-
add_log "${cross:?}" ":$extension" "Could not disable $extension on PHP ${semver:?}"
|
|
171
|
-
else
|
|
172
|
-
add_log "${cross:?}" ":$extension" "Could not disable $extension on PHP $semver as it not a shared extension"
|
|
173
|
-
fi
|
|
174
|
-
elif shared_extension "$extension"; then
|
|
175
|
-
add_log "${tick:?}" ":$extension" "Disabled"
|
|
176
|
-
else
|
|
177
|
-
add_log "${tick:?}" ":$extension" "Could not find $extension on PHP $semver"
|
|
178
|
-
fi
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
# Function to disable shared extensions.
|
|
182
|
-
disable_all_shared() {
|
|
183
|
-
sudo sed -i.orig -E -e "/^(zend_)?extension\s*=/d" "${ini_file[@]}" "$pecl_file" 2>/dev/null || true
|
|
184
|
-
sudo find "${ini_dir:-$scan_dir}"/.. -name "*.ini" -not -path "*php.ini" -not -path "*mods-available*" -delete >/dev/null 2>&1 || true
|
|
185
|
-
add_log "${tick:?}" "none" "Disabled all shared extensions"
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
# Function to configure PHP
|
|
189
|
-
configure_php() {
|
|
190
|
-
(
|
|
191
|
-
echo -e "date.timezone=UTC\nmemory_limit=-1"
|
|
192
|
-
[[ "$version" =~ $jit_versions ]] && echo -e "opcache.enable=1\nopcache.jit_buffer_size=256M\nopcache.jit=1235"
|
|
193
|
-
[[ "$version" =~ $xdebug3_versions ]] && echo -e "xdebug.mode=coverage"
|
|
194
|
-
) | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
# Function to configure PECL.
|
|
198
|
-
configure_pecl() {
|
|
199
|
-
if ! [ -e /tmp/pecl_config ]; then
|
|
200
|
-
for script in pear pecl; do
|
|
201
|
-
sudo "$script" config-set php_ini "${pecl_file:-${ini_file[@]}}"
|
|
202
|
-
sudo "$script" channel-update "$script".php.net
|
|
203
|
-
done
|
|
204
|
-
echo '' | sudo tee /tmp/pecl_config >/dev/null 2>&1
|
|
205
|
-
fi
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
# Function to get the PECL version of an extension.
|
|
209
|
-
get_pecl_version() {
|
|
210
|
-
local extension=$1
|
|
211
|
-
stability="$(echo "$2" | grep -m 1 -Eio "(stable|alpha|beta|rc|snapshot|preview)")"
|
|
212
|
-
pecl_rest='https://pecl.php.net/rest/r/'
|
|
213
|
-
response=$(get -s -n "" "$pecl_rest$extension"/allreleases.xml)
|
|
214
|
-
pecl_version=$(echo "$response" | grep -m 1 -Eio "([0-9]+\.[0-9]+\.[0-9]+${stability}[0-9]+)")
|
|
215
|
-
if [ ! "$pecl_version" ]; then
|
|
216
|
-
pecl_version=$(echo "$response" | grep -m 1 -Eo "([0-9]+\.[0-9]+\.[0-9]+)")
|
|
217
|
-
fi
|
|
218
|
-
echo "$pecl_version"
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
# Function to install PECL extensions and accept default options
|
|
222
|
-
pecl_install() {
|
|
223
|
-
local extension=$1
|
|
224
|
-
add_pecl >/dev/null 2>&1
|
|
225
|
-
yes '' 2>/dev/null | sudo pecl install -f "$extension" >/dev/null 2>&1
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
# Function to install a specific version of PECL extension.
|
|
229
|
-
add_pecl_extension() {
|
|
230
|
-
local extension=$1
|
|
231
|
-
pecl_version=$2
|
|
232
|
-
prefix=$3
|
|
233
|
-
enable_extension "$extension" "$prefix"
|
|
234
|
-
if [[ $pecl_version =~ .*(alpha|beta|rc|snapshot|preview).* ]]; then
|
|
235
|
-
pecl_version=$(get_pecl_version "$extension" "$pecl_version")
|
|
236
|
-
fi
|
|
237
|
-
ext_version=$(php -r "echo phpversion('$extension');")
|
|
238
|
-
if [ "$ext_version" = "$pecl_version" ]; then
|
|
239
|
-
add_log "${tick:?}" "$extension" "Enabled"
|
|
240
|
-
else
|
|
241
|
-
disable_extension_helper "$extension" >/dev/null 2>&1
|
|
242
|
-
pecl_install "$extension-$pecl_version"
|
|
243
|
-
add_extension_log "$extension-$pecl_version" "Installed and enabled"
|
|
244
|
-
fi
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
# Function to setup pre-release extensions using PECL.
|
|
248
|
-
add_unstable_extension() {
|
|
249
|
-
local extension=$1
|
|
250
|
-
stability=$2
|
|
251
|
-
prefix=$3
|
|
252
|
-
pecl_version=$(get_pecl_version "$extension" "$stability")
|
|
253
|
-
add_pecl_extension "$extension" "$pecl_version" "$prefix"
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
# Function to extract tool version.
|
|
257
|
-
get_tool_version() {
|
|
258
|
-
tool=$1
|
|
259
|
-
param=$2
|
|
260
|
-
alp="[a-zA-Z0-9]"
|
|
261
|
-
version_regex="[0-9]+((\.{1}$alp+)+)(\.{0})(-$alp+){0,1}"
|
|
262
|
-
if [ "$tool" = "composer" ]; then
|
|
263
|
-
if [ "$param" != "snapshot" ]; then
|
|
264
|
-
composer_version="$(grep -Ea "const\sVERSION" "$tool_path_dir/composer" | grep -Eo "$version_regex")"
|
|
265
|
-
else
|
|
266
|
-
composer_version="$(grep -Ea "const\sBRANCH_ALIAS_VERSION" "$tool_path_dir/composer" | grep -Eo "$version_regex")+$(grep -Ea "const\sVERSION" "$tool_path_dir/composer" | grep -Eo "[a-zA-z0-9]+" | tail -n 1)"
|
|
267
|
-
fi
|
|
268
|
-
echo "$composer_version" | sudo tee /tmp/composer_version
|
|
269
|
-
else
|
|
270
|
-
$tool "$param" 2>/dev/null | sed -Ee "s/[Cc]omposer(.)?$version_regex//g" | grep -Eo "$version_regex" | head -n 1
|
|
271
|
-
fi
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
# Function to configure composer
|
|
275
|
-
configure_composer() {
|
|
276
|
-
tool_path=$1
|
|
277
|
-
sudo ln -sf "$tool_path" "$tool_path.phar"
|
|
278
|
-
php -r "try {\$p=new Phar('$tool_path.phar', 0);exit(0);} catch(Exception \$e) {exit(1);}"
|
|
279
|
-
if [ $? -eq 1 ]; then
|
|
280
|
-
add_log "$cross" "composer" "Could not download composer"
|
|
281
|
-
exit 1
|
|
282
|
-
fi
|
|
283
|
-
if ! [ -d "$composer_home" ]; then
|
|
284
|
-
sudo -u "$(id -un)" -g "$(id -gn)" mkdir -p -m=00755 "$composer_home"
|
|
285
|
-
else
|
|
286
|
-
sudo chown -R "$(id -un)":"$(id -gn)" "$composer_home"
|
|
287
|
-
fi
|
|
288
|
-
if ! [ -e "$composer_json" ]; then
|
|
289
|
-
echo '{}' | tee "$composer_json" >/dev/null
|
|
290
|
-
chmod 644 "$composer_json"
|
|
291
|
-
fi
|
|
292
|
-
composer -q config -g process-timeout 0
|
|
293
|
-
echo "$composer_bin" >>"$GITHUB_PATH"
|
|
294
|
-
if [ -n "$COMPOSER_TOKEN" ]; then
|
|
295
|
-
composer -q config -g github-oauth.github.com "$COMPOSER_TOKEN"
|
|
296
|
-
fi
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
# Function to setup a remote tool.
|
|
300
|
-
add_tool() {
|
|
301
|
-
url=$1
|
|
302
|
-
tool=$2
|
|
303
|
-
ver_param=$3
|
|
304
|
-
tool_path="$tool_path_dir/$tool"
|
|
305
|
-
if ! [[ "$PATH" =~ $tool_path_dir ]]; then
|
|
306
|
-
export PATH=$PATH:"$tool_path_dir"
|
|
307
|
-
echo "export PATH=\$PATH:$tool_path_dir" | sudo tee -a "$GITHUB_ENV" >/dev/null
|
|
308
|
-
fi
|
|
309
|
-
if [ ! -e "$tool_path" ]; then
|
|
310
|
-
rm -rf "$tool_path"
|
|
311
|
-
fi
|
|
312
|
-
IFS="," read -r -a url <<<"$url"
|
|
313
|
-
status_code=$(get -v -e "$tool_path" "${url[@]}")
|
|
314
|
-
if [ "$status_code" != "200" ] && [[ "${url[0]}" =~ .*github.com.*releases.*latest.* ]]; then
|
|
315
|
-
url[0]="${url[0]//releases\/latest\/download/releases/download/$(get -s -n "" "$(echo "${url[0]}" | cut -d '/' -f '1-5')/releases" | grep -Eo -m 1 "([0-9]+\.[0-9]+\.[0-9]+)/$(echo "${url[0]}" | sed -e "s/.*\///")" | cut -d '/' -f 1)}"
|
|
316
|
-
status_code=$(get -v -e "$tool_path" "${url[0]}")
|
|
317
|
-
fi
|
|
318
|
-
if [ "$status_code" = "200" ]; then
|
|
319
|
-
add_tools_helper "$tool"
|
|
320
|
-
tool_version=$(get_tool_version "$tool" "$ver_param")
|
|
321
|
-
add_log "$tick" "$tool" "Added $tool $tool_version"
|
|
322
|
-
else
|
|
323
|
-
add_log "$cross" "$tool" "Could not setup $tool"
|
|
324
|
-
fi
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
# Function to setup a tool using composer.
|
|
328
|
-
add_composertool() {
|
|
329
|
-
tool=$1
|
|
330
|
-
release=$2
|
|
331
|
-
prefix=$3
|
|
332
|
-
if [[ "$tool" =~ prestissimo|composer-prefetcher ]]; then
|
|
333
|
-
composer_version=$(cat /tmp/composer_version)
|
|
334
|
-
if [ "$(echo "$composer_version" | cut -d'.' -f 1)" != "1" ]; then
|
|
335
|
-
echo "::warning:: Skipping $tool, as it does not support Composer $composer_version. Specify composer:v1 in tools to use $tool"
|
|
336
|
-
add_log "$cross" "$tool" "Skipped"
|
|
337
|
-
return
|
|
338
|
-
fi
|
|
339
|
-
fi
|
|
340
|
-
(
|
|
341
|
-
sudo rm -f "$composer_lock" >/dev/null 2>&1 || true
|
|
342
|
-
composer global require "$prefix$release" 2>&1 | tee /tmp/composer.log >/dev/null 2>&1
|
|
343
|
-
log=$(grep "$prefix$tool" /tmp/composer.log) &&
|
|
344
|
-
tool_version=$(get_tool_version 'echo' "$log") &&
|
|
345
|
-
add_log "$tick" "$tool" "Added $tool $tool_version"
|
|
346
|
-
) || add_log "$cross" "$tool" "Could not setup $tool"
|
|
347
|
-
add_tools_helper "$tool"
|
|
348
|
-
if [ -e "$composer_bin/composer" ]; then
|
|
349
|
-
sudo cp -p "$tool_path_dir/composer" "$composer_bin"
|
|
350
|
-
fi
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
# Function to get PHP version in semver format.
|
|
354
|
-
php_semver() {
|
|
355
|
-
php -v | grep -Eo -m 1 "[0-9]+\.[0-9]+\.[0-9]+((-?[a-zA-Z]+([0-9]+)?)?){2}" | head -n 1
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
# Function to get the tag for a php version.
|
|
359
|
-
php_src_tag() {
|
|
360
|
-
commit=$(php_extra_version | grep -Eo "[0-9a-zA-Z]+")
|
|
361
|
-
if [[ -n "${commit}" ]]; then
|
|
362
|
-
echo "$commit"
|
|
363
|
-
else
|
|
364
|
-
echo "php-$semver"
|
|
365
|
-
fi
|
|
366
|
-
}
|