setup-php 2.12.0 → 2.16.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.
Files changed (113) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +977 -936
  3. package/package.json +66 -56
  4. package/src/config.ts +82 -82
  5. package/src/configs/brew_extensions +30 -0
  6. package/src/configs/os_releases.csv +17 -0
  7. package/src/configs/php-versions.json +6 -5
  8. package/src/configs/{php.json → pm/php.json} +29 -29
  9. package/src/configs/{phpunit.json → pm/phpunit.json} +24 -24
  10. package/src/configs/tools.json +256 -234
  11. package/src/configs/tools_schema.json +114 -103
  12. package/src/coverage.ts +169 -142
  13. package/src/extensions.ts +363 -349
  14. package/src/install.ts +79 -82
  15. package/src/scripts/common.sh +366 -314
  16. package/src/scripts/darwin.sh +257 -248
  17. package/src/scripts/ext/blackfire.ps1 +32 -32
  18. package/src/scripts/ext/blackfire.sh +22 -21
  19. package/src/scripts/ext/couchbase.sh +43 -43
  20. package/src/scripts/ext/cubrid.sh +60 -60
  21. package/src/scripts/ext/extension_map.php +109 -0
  22. package/src/scripts/ext/firebird.ps1 +19 -19
  23. package/src/scripts/ext/firebird.sh +39 -35
  24. package/src/scripts/ext/gearman.sh +22 -22
  25. package/src/scripts/ext/geos.sh +17 -17
  26. package/src/scripts/ext/http.ps1 +54 -54
  27. package/src/scripts/ext/http.sh +120 -120
  28. package/src/scripts/ext/intl.sh +23 -23
  29. package/src/scripts/ext/ioncube.ps1 +33 -32
  30. package/src/scripts/ext/ioncube.sh +21 -19
  31. package/src/scripts/ext/oci.ps1 +60 -60
  32. package/src/scripts/ext/oci.sh +65 -63
  33. package/src/scripts/ext/patches/firebird.sh +11 -11
  34. package/src/scripts/ext/patches/geos.sh +7 -7
  35. package/src/scripts/ext/patches/http.sh +11 -11
  36. package/src/scripts/ext/patches/pdo_oci.sh +6 -6
  37. package/src/scripts/ext/patches/phpize.sh +26 -26
  38. package/src/scripts/ext/patches/protobuf.sh +4 -4
  39. package/src/scripts/ext/phalcon.ps1 +54 -55
  40. package/src/scripts/ext/phalcon.sh +59 -59
  41. package/src/scripts/ext/source.sh +144 -144
  42. package/src/scripts/linux.sh +239 -280
  43. package/src/scripts/tools/add_tools.ps1 +28 -25
  44. package/src/scripts/tools/add_tools.sh +27 -19
  45. package/src/scripts/tools/blackfire.ps1 +19 -21
  46. package/src/scripts/tools/blackfire.sh +40 -35
  47. package/src/scripts/tools/grpc_php_plugin.ps1 +21 -21
  48. package/src/scripts/tools/grpc_php_plugin.sh +58 -61
  49. package/src/scripts/tools/ppa.sh +189 -0
  50. package/src/scripts/tools/protoc.ps1 +38 -38
  51. package/src/scripts/tools/protoc.sh +28 -28
  52. package/src/scripts/win32.ps1 +566 -471
  53. package/src/tools.ts +538 -509
  54. package/src/utils.ts +503 -497
  55. package/.eslintrc.json +0 -16
  56. package/.github/CODE_OF_CONDUCT.md +0 -76
  57. package/.github/CONTRIBUTING.md +0 -70
  58. package/.github/FUNDING.yml +0 -7
  59. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -42
  60. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -26
  61. package/.github/PULL_REQUEST_TEMPLATE.md +0 -37
  62. package/.github/SECURITY.md +0 -29
  63. package/.github/workflows/docs.yml +0 -77
  64. package/.github/workflows/node-workflow.yml +0 -51
  65. package/.github/workflows/workflow.yml +0 -78
  66. package/.idea/workspace.xml +0 -113
  67. package/.prettierrc.json +0 -12
  68. package/__tests__/config.test.ts +0 -52
  69. package/__tests__/coverage.test.ts +0 -110
  70. package/__tests__/extensions.test.ts +0 -261
  71. package/__tests__/install.test.ts +0 -175
  72. package/__tests__/tools.test.ts +0 -490
  73. package/__tests__/utils.test.ts +0 -303
  74. package/action.yml +0 -29
  75. package/dist/index.js +0 -3001
  76. package/examples/bedrock.yml +0 -32
  77. package/examples/blackfire-player.yml +0 -31
  78. package/examples/blackfire.yml +0 -31
  79. package/examples/cakephp-mysql.yml +0 -114
  80. package/examples/cakephp-postgres.yml +0 -112
  81. package/examples/cakephp.yml +0 -92
  82. package/examples/codeigniter.yml +0 -34
  83. package/examples/laravel-mysql.yml +0 -74
  84. package/examples/laravel-postgres.yml +0 -74
  85. package/examples/laravel.yml +0 -42
  86. package/examples/lumen-mysql.yml +0 -74
  87. package/examples/lumen-postgres.yml +0 -74
  88. package/examples/lumen.yml +0 -38
  89. package/examples/phalcon-mysql.yml +0 -74
  90. package/examples/phalcon-postgres.yml +0 -73
  91. package/examples/sage.yml +0 -57
  92. package/examples/slim-framework.yml +0 -34
  93. package/examples/symfony-mysql.yml +0 -57
  94. package/examples/symfony-postgres.yml +0 -55
  95. package/examples/symfony.yml +0 -39
  96. package/examples/yii2-mysql.yml +0 -73
  97. package/examples/yii2-postgres.yml +0 -71
  98. package/examples/zend-framework.yml +0 -36
  99. package/jest.config.js +0 -12
  100. package/lib/config.js +0 -72
  101. package/lib/config.js.map +0 -1
  102. package/lib/coverage.js +0 -88
  103. package/lib/coverage.js.map +0 -1
  104. package/lib/extensions.js +0 -201
  105. package/lib/extensions.js.map +0 -1
  106. package/lib/install.js +0 -82
  107. package/lib/install.js.map +0 -1
  108. package/lib/sapi.js +0 -64
  109. package/lib/tools.js +0 -387
  110. package/lib/tools.js.map +0 -1
  111. package/lib/utils.js +0 -292
  112. package/lib/utils.js.map +0 -1
  113. package/tsconfig.json +0 -18
@@ -1,280 +1,239 @@
1
- # Function to setup environment for self-hosted runners.
2
- self_hosted_helper() {
3
- if ! command -v apt-fast >/dev/null; then
4
- sudo ln -sf /usr/bin/apt-get /usr/bin/apt-fast
5
- fi
6
- install_packages apt-transport-https curl make software-properties-common unzip autoconf automake gcc g++
7
- add_ppa ondrej/php
8
- }
9
-
10
- # Function to backup and cleanup package lists.
11
- cleanup_lists() {
12
- ppa_prefix=${1-ondrej}
13
- if [ ! -e /etc/apt/sources.list.d.save ]; then
14
- sudo mv /etc/apt/sources.list.d /etc/apt/sources.list.d.save
15
- sudo mkdir /etc/apt/sources.list.d
16
- sudo mv /etc/apt/sources.list.d.save/*"${ppa_prefix}"*.list /etc/apt/sources.list.d/
17
- trap "sudo mv /etc/apt/sources.list.d.save/*.list /etc/apt/sources.list.d/ 2>/dev/null" exit
18
- fi
19
- }
20
-
21
- # Function to add ppa:ondrej/php.
22
- add_ppa() {
23
- ppa=${1:-ondrej/php}
24
- if ! apt-cache policy | grep -q "$ppa"; then
25
- cleanup_lists "$(dirname "$ppa")"
26
- LC_ALL=C.UTF-8 sudo apt-add-repository ppa:"$ppa" -y
27
- fi
28
- }
29
-
30
- # Function to update the package lists.
31
- update_lists() {
32
- if [ ! -e /tmp/setup_php ]; then
33
- [ "${runner:?}" != "self-hosted" ] && add_ppa >/dev/null 2>&1
34
- cleanup_lists
35
- sudo "$debconf_fix" apt-get update >/dev/null 2>&1
36
- echo '' | sudo tee /tmp/setup_php >/dev/null 2>&1
37
- fi
38
- }
39
-
40
- # Function to install a package
41
- install_packages() {
42
- packages=("$@")
43
- $apt_install "${packages[@]}" >/dev/null 2>&1 || update_lists && $apt_install "${packages[@]}" >/dev/null 2>&1
44
- }
45
-
46
- # Function to disable an extension.
47
- disable_extension() {
48
- extension=$1
49
- sudo sed -Ei "/=(.*\/)?\"?$extension(.so)?$/d" "${ini_file[@]}"
50
- sudo sed -Ei "/=(.*\/)?\"?$extension(.so)?$/d" "$pecl_file"
51
- sudo find "$ini_dir"/.. -name "*$extension.ini" -delete >/dev/null 2>&1 || true
52
- }
53
-
54
- # Function to delete an extension.
55
- delete_extension() {
56
- extension=$1
57
- disable_extension "$extension"
58
- sudo rm -rf "$ext_dir"/"$extension".so >/dev/null 2>&1
59
- sudo sed -i "/Package: php$version-$extension/,/^$/d" /var/lib/dpkg/status
60
- }
61
-
62
- # Function to disable and delete extensions.
63
- remove_extension() {
64
- extension=$1
65
- if check_extension "$extension"; then
66
- if [[ ! "$version" =~ ${old_versions:?} ]] && [ -e /etc/php/"$version"/mods-available/"$extension".ini ]; then
67
- sudo phpdismod -v "$version" "$extension" >/dev/null 2>&1
68
- fi
69
- delete_extension "$extension"
70
- (! check_extension "$extension" && add_log "${tick:?}" ":$extension" "Removed") ||
71
- add_log "${cross:?}" ":$extension" "Could not remove $extension on PHP ${semver:?}"
72
- else
73
- delete_extension "$extension"
74
- add_log "${tick:?}" ":$extension" "Could not find $extension on PHP $semver"
75
- fi
76
- }
77
-
78
- # Function to add PDO extension.
79
- add_pdo_extension() {
80
- pdo_ext="pdo_$1"
81
- if check_extension "$pdo_ext"; then
82
- add_log "${tick:?}" "$pdo_ext" "Enabled"
83
- else
84
- ext=$1
85
- ext_name=$1
86
- if [ -e "$ext_dir"/pdo.so ]; then
87
- disable_extension pdo
88
- echo "extension=pdo.so" | sudo tee "${ini_file[@]/php.ini/conf.d/10-pdo.ini}" >/dev/null 2>&1
89
- fi
90
- if [ "$ext" = "mysql" ]; then
91
- enable_extension "mysqlnd" "extension"
92
- ext_name='mysqli'
93
- elif [ "$ext" = "dblib" ]; then
94
- ext_name="sybase"
95
- elif [ "$ext" = "firebird" ]; then
96
- install_packages libfbclient2 >/dev/null 2>&1
97
- enable_extension "pdo_firebird" "extension"
98
- ext_name="interbase"
99
- elif [ "$ext" = "sqlite" ]; then
100
- ext="sqlite3"
101
- ext_name="sqlite3"
102
- fi
103
- add_extension "$ext_name" "extension" >/dev/null 2>&1
104
- add_extension "$pdo_ext" "extension" >/dev/null 2>&1
105
- add_extension_log "$pdo_ext" "Enabled"
106
- fi
107
- }
108
-
109
- # Function to add extensions.
110
- add_extension() {
111
- extension=$1
112
- prefix=$2
113
- enable_extension "$extension" "$prefix"
114
- if check_extension "$extension"; then
115
- add_log "${tick:?}" "$extension" "Enabled"
116
- else
117
- if [[ "$version" =~ ${nightly_versions:?} ]]; then
118
- pecl_install "$extension"
119
- else
120
- install_packages "php$version-$extension" || pecl_install "$extension"
121
- fi
122
- add_extension_log "$extension" "Installed and enabled"
123
- fi
124
- sudo chmod 777 "${ini_file[@]}"
125
- }
126
-
127
- # Function to setup phpize and php-config.
128
- add_devtools() {
129
- tool=$1
130
- if ! command -v "$tool$version" >/dev/null; then
131
- install_packages "php$version-dev" "php$version-xml"
132
- fi
133
- switch_version "phpize" "php-config"
134
- add_log "${tick:?}" "$tool" "Added $tool $semver"
135
- }
136
-
137
- # Function to setup the nightly build from shivammathur/php-builder
138
- setup_nightly() {
139
- run_script "php-builder" "$runner" "$version"
140
- }
141
-
142
- # Function to setup PHP 5.3, PHP 5.4 and PHP 5.5.
143
- setup_old_versions() {
144
- run_script "php5-ubuntu" "$version"
145
- }
146
-
147
- # Function to add PECL.
148
- add_pecl() {
149
- add_devtools phpize >/dev/null 2>&1
150
- if ! command -v pecl >/dev/null; then
151
- install_packages php-pear
152
- fi
153
- configure_pecl >/dev/null 2>&1
154
- pecl_version=$(get_tool_version "pecl" "version")
155
- add_log "${tick:?}" "PECL" "Added PECL $pecl_version"
156
- }
157
-
158
- # Function to switch versions of PHP binaries.
159
- switch_version() {
160
- tools=("$@") && ! (( ${#tools[@]} )) && tools+=(pear pecl php phar phar.phar php-cgi php-config phpize phpdbg)
161
- to_wait=()
162
- for tool in "${tools[@]}"; do
163
- if [ -e "/usr/bin/$tool$version" ]; then
164
- sudo update-alternatives --set "$tool" /usr/bin/"$tool$version" &
165
- to_wait+=($!)
166
- fi
167
- done
168
- wait "${to_wait[@]}"
169
- }
170
-
171
- # Function to install packaged PHP
172
- add_packaged_php() {
173
- if [ "$runner" = "self-hosted" ] || [ "${use_package_cache:-true}" = "false" ]; then
174
- update_lists
175
- IFS=' ' read -r -a packages <<<"$(echo "cli curl mbstring xml intl" | sed "s/[^ ]*/php$version-&/g")"
176
- $apt_install "${packages[@]}"
177
- else
178
- run_script "php-ubuntu" "$version"
179
- fi
180
- }
181
-
182
- # Function to update PHP.
183
- update_php() {
184
- initial_version=$(php_semver)
185
- add_packaged_php
186
- updated_version=$(php_semver)
187
- if [ "$updated_version" != "$initial_version" ]; then
188
- status="Updated to"
189
- else
190
- status="Switched to"
191
- fi
192
- }
193
-
194
- # Function to install PHP.
195
- add_php() {
196
- if [[ "$version" =~ ${nightly_versions:?} ]]; then
197
- setup_nightly
198
- elif [[ "$version" =~ ${old_versions:?} ]]; then
199
- setup_old_versions
200
- else
201
- add_packaged_php
202
- fi
203
- status="Installed"
204
- }
205
-
206
- # Function to ini file for pear and link it to each SAPI.
207
- link_pecl_file() {
208
- echo '' | sudo tee "$pecl_file" >/dev/null 2>&1
209
- for file in "${ini_file[@]}"; do
210
- sapi_scan_dir="$(realpath -m "$(dirname "$file")")/conf.d"
211
- [ "$sapi_scan_dir" != "$scan_dir" ] && ! [ -h "$sapi_scan_dir" ] && sudo ln -sf "$pecl_file" "$sapi_scan_dir/99-pecl.ini"
212
- done
213
- }
214
-
215
- # Function to get extra version.
216
- php_extra_version() {
217
- if [[ ${version:?} =~ ${nightly_versions:?} ]]; then
218
- echo " ($(cat "/etc/php/$version/COMMIT"))"
219
- fi
220
- }
221
-
222
- # Function to Setup PHP
223
- setup_php() {
224
- step_log "Setup PHP"
225
- sudo mkdir -m 777 -p /var/run /run/php
226
- if [ "$(php-config --version 2>/dev/null | cut -c 1-3)" != "$version" ]; then
227
- if [ ! -e "/usr/bin/php$version" ]; then
228
- add_php >/dev/null 2>&1
229
- else
230
- if [ "${update:?}" = "true" ]; then
231
- update_php >/dev/null 2>&1
232
- else
233
- status="Switched to"
234
- fi
235
- fi
236
- if ! [[ "$version" =~ ${old_versions:?}|${nightly_versions:?} ]]; then
237
- switch_version >/dev/null 2>&1
238
- fi
239
- else
240
- if [ "$update" = "true" ]; then
241
- update_php >/dev/null 2>&1
242
- else
243
- status="Found"
244
- fi
245
- fi
246
- if ! command -v php"$version" >/dev/null; then
247
- add_log "$cross" "PHP" "Could not setup PHP $version"
248
- exit 1
249
- fi
250
- semver=$(php_semver)
251
- extra_version=$(php_extra_version)
252
- ext_dir=$(php -i | grep "extension_dir => /" | sed -e "s|.*=> s*||")
253
- scan_dir=$(php --ini | grep additional | sed -e "s|.*: s*||")
254
- ini_dir=$(php --ini | grep "(php.ini)" | sed -e "s|.*: s*||")
255
- pecl_file="$scan_dir"/99-pecl.ini
256
- mapfile -t ini_file < <(sudo find "$ini_dir/.." -name "php.ini" -exec readlink -m {} +)
257
- link_pecl_file
258
- configure_php
259
- sudo rm -rf /usr/local/bin/phpunit >/dev/null 2>&1
260
- sudo chmod 777 "${ini_file[@]}" "$pecl_file" "${tool_path_dir:?}"
261
- sudo cp "$dist"/../src/configs/*.json "$RUNNER_TOOL_CACHE/"
262
- echo "::set-output name=php-version::$semver"
263
- add_log "${tick:?}" "PHP" "$status PHP $semver$extra_version"
264
- }
265
-
266
- # Variables
267
- version=$1
268
- dist=$2
269
- debconf_fix="DEBIAN_FRONTEND=noninteractive"
270
- apt_install="sudo $debconf_fix apt-fast install -y"
271
- scripts="${dist}"/../src/scripts
272
-
273
- # shellcheck source=.
274
- . "${scripts:?}"/ext/source.sh
275
- . "${scripts:?}"/tools/add_tools.sh
276
- . "${scripts:?}"/common.sh
277
- . /etc/lsb-release
278
- read_env
279
- self_hosted_setup
280
- setup_php
1
+ # Function to setup environment for self-hosted runners.
2
+ self_hosted_helper() {
3
+ if ! command -v sudo >/dev/null; then
4
+ apt-get update
5
+ apt-get install -y sudo || add_log "${cross:?}" "sudo" "Could not install sudo"
6
+ fi
7
+ if ! command -v apt-fast >/dev/null; then
8
+ sudo ln -sf /usr/bin/apt-get /usr/bin/apt-fast
9
+ trap "sudo rm -f /usr/bin/apt-fast 2>/dev/null" exit
10
+ fi
11
+ install_packages apt-transport-https ca-certificates curl file make jq unzip autoconf automake gcc g++ gnupg
12
+ }
13
+
14
+ # Function to install a package
15
+ install_packages() {
16
+ packages=("$@")
17
+ $apt_install "${packages[@]}" >/dev/null 2>&1 || (update_lists && $apt_install "${packages[@]}" >/dev/null 2>&1)
18
+ }
19
+
20
+ # Function to disable an extension.
21
+ disable_extension_helper() {
22
+ local extension=$1
23
+ local disable_dependents=${2:-false}
24
+ if [ "$disable_dependents" = "true" ]; then
25
+ disable_extension_dependents "$extension"
26
+ fi
27
+ sudo sed -Ei "/=(.*\/)?\"?$extension(.so)?$/d" "${ini_file[@]}" "$pecl_file"
28
+ sudo find "$ini_dir"/.. -name "*$extension.ini" -not -path "*mods-available*" -delete >/dev/null 2>&1 || true
29
+ }
30
+
31
+ # Function to add PDO extension.
32
+ add_pdo_extension() {
33
+ pdo_ext="pdo_$1"
34
+ if check_extension "$pdo_ext"; then
35
+ add_log "${tick:?}" "$pdo_ext" "Enabled"
36
+ else
37
+ ext=$1
38
+ ext_name=$1
39
+ if shared_extension pdo; then
40
+ disable_extension_helper pdo
41
+ echo "extension=pdo.so" | sudo tee "${ini_file[@]/php.ini/conf.d/10-pdo.ini}" >/dev/null 2>&1
42
+ fi
43
+ if [ "$ext" = "mysql" ]; then
44
+ enable_extension "mysqlnd" "extension"
45
+ ext_name='mysqli'
46
+ elif [ "$ext" = "dblib" ]; then
47
+ ext_name="sybase"
48
+ elif [ "$ext" = "firebird" ]; then
49
+ install_packages libfbclient2 >/dev/null 2>&1
50
+ enable_extension "pdo_firebird" "extension"
51
+ ext_name="interbase"
52
+ elif [ "$ext" = "sqlite" ]; then
53
+ ext="sqlite3"
54
+ ext_name="sqlite3"
55
+ fi
56
+ add_extension "$ext_name" "extension" >/dev/null 2>&1
57
+ add_extension "$pdo_ext" "extension" >/dev/null 2>&1
58
+ add_extension_log "$pdo_ext" "Enabled"
59
+ fi
60
+ }
61
+
62
+ # Function to check if a package exists
63
+ check_package() {
64
+ sudo apt-cache policy "$1" 2>/dev/null | grep -q 'Candidate'
65
+ }
66
+
67
+ # Function to add extensions.
68
+ add_extension() {
69
+ local extension=$1
70
+ prefix=$2
71
+ package=php"$version"-"$extension"
72
+ enable_extension "$extension" "$prefix"
73
+ if check_extension "$extension"; then
74
+ add_log "${tick:?}" "$extension" "Enabled"
75
+ else
76
+ add_ppa ondrej/php >/dev/null 2>&1 || update_ppa ondrej/php
77
+ (check_package "$package" && install_packages "$package") || pecl_install "$extension"
78
+ add_extension_log "$extension" "Installed and enabled"
79
+ fi
80
+ sudo chmod 777 "${ini_file[@]}"
81
+ }
82
+
83
+ # Function to setup phpize and php-config.
84
+ add_devtools() {
85
+ tool=$1
86
+ if ! command -v "$tool$version" >/dev/null; then
87
+ install_packages "php$version-dev" "php$version-xml"
88
+ fi
89
+ switch_version "phpize" "php-config"
90
+ add_log "${tick:?}" "$tool" "Added $tool $semver"
91
+ }
92
+
93
+ # Function to setup the nightly build from shivammathur/php-builder
94
+ setup_nightly() {
95
+ run_script "php-builder" "${runner:?}" "$version"
96
+ }
97
+
98
+ # Function to setup PHP 5.3, PHP 5.4 and PHP 5.5.
99
+ setup_old_versions() {
100
+ run_script "php5-ubuntu" "$version"
101
+ }
102
+
103
+ # Function to add PECL.
104
+ add_pecl() {
105
+ add_devtools phpize >/dev/null 2>&1
106
+ if ! command -v pecl >/dev/null; then
107
+ install_packages php-pear
108
+ fi
109
+ configure_pecl >/dev/null 2>&1
110
+ pear_version=$(get_tool_version "pecl" "version")
111
+ add_log "${tick:?}" "PECL" "Added PECL $pear_version"
112
+ }
113
+
114
+ # Function to switch versions of PHP binaries.
115
+ switch_version() {
116
+ tools=("$@") && ! (( ${#tools[@]} )) && tools+=(pear pecl php phar phar.phar php-cgi php-config phpize phpdbg)
117
+ to_wait=()
118
+ for tool in "${tools[@]}"; do
119
+ if [ -e "/usr/bin/$tool$version" ]; then
120
+ sudo update-alternatives --set "$tool" /usr/bin/"$tool$version" &
121
+ to_wait+=($!)
122
+ fi
123
+ done
124
+ wait "${to_wait[@]}"
125
+ }
126
+
127
+ # Function to install packaged PHP
128
+ add_packaged_php() {
129
+ if [ "$runner" = "self-hosted" ] || [ "${use_package_cache:-true}" = "false" ]; then
130
+ add_ppa ondrej/php >/dev/null 2>&1 || update_ppa ondrej/php
131
+ IFS=' ' read -r -a packages <<<"$(echo "cli curl dev mbstring xml intl" | sed "s/[^ ]*/php$version-&/g")"
132
+ install_packages "${packages[@]}"
133
+ else
134
+ run_script "php-ubuntu" "$version"
135
+ fi
136
+ }
137
+
138
+ # Function to update PHP.
139
+ update_php() {
140
+ initial_version="$(php_semver)$(php_extra_version)"
141
+ add_php
142
+ updated_version="$(php_semver)$(php_extra_version)"
143
+ if [ "$updated_version" != "$initial_version" ]; then
144
+ status="Updated to"
145
+ else
146
+ status="Found"
147
+ fi
148
+ }
149
+
150
+ # Function to install PHP.
151
+ add_php() {
152
+ if [[ "$version" =~ ${nightly_versions:?} ]]; then
153
+ setup_nightly
154
+ elif [[ "$version" =~ ${old_versions:?} ]]; then
155
+ setup_old_versions
156
+ else
157
+ add_packaged_php
158
+ switch_version >/dev/null 2>&1
159
+ fi
160
+ status="Installed"
161
+ }
162
+
163
+ # Function to ini file for pear and link it to each SAPI.
164
+ link_pecl_file() {
165
+ echo '' | sudo tee "$pecl_file" >/dev/null 2>&1
166
+ for file in "${ini_file[@]}"; do
167
+ sapi_scan_dir="$(realpath -m "$(dirname "$file")")/conf.d"
168
+ [ "$sapi_scan_dir" != "$scan_dir" ] && ! [ -h "$sapi_scan_dir" ] && sudo ln -sf "$pecl_file" "$sapi_scan_dir/99-pecl.ini"
169
+ done
170
+ }
171
+
172
+ # Function to get extra version.
173
+ php_extra_version() {
174
+ if [ -e /etc/php/"$version"/COMMIT ]; then
175
+ echo " ($(cat "/etc/php/$version/COMMIT"))"
176
+ fi
177
+ }
178
+
179
+ # Function to Setup PHP
180
+ setup_php() {
181
+ step_log "Setup PHP"
182
+ sudo mkdir -m 777 -p /var/run /run/php
183
+ if [ "$(php-config --version 2>/dev/null | cut -c 1-3)" != "$version" ]; then
184
+ if [ ! -e "/usr/bin/php$version" ]; then
185
+ add_php >/dev/null 2>&1
186
+ else
187
+ if ! [[ "$version" =~ ${old_versions:?} ]]; then
188
+ switch_version >/dev/null 2>&1
189
+ fi
190
+ if [ "${update:?}" = "true" ]; then
191
+ update_php >/dev/null 2>&1
192
+ else
193
+ status="Switched to"
194
+ fi
195
+ fi
196
+ else
197
+ if [ "$update" = "true" ]; then
198
+ update_php >/dev/null 2>&1
199
+ else
200
+ status="Found"
201
+ fi
202
+ fi
203
+ if ! command -v php"$version" >/dev/null; then
204
+ add_log "$cross" "PHP" "Could not setup PHP $version"
205
+ exit 1
206
+ fi
207
+ semver=$(php_semver)
208
+ extra_version=$(php_extra_version)
209
+ ext_dir=$(php -i | grep "extension_dir => /" | sed -e "s|.*=> s*||")
210
+ scan_dir=$(php --ini | grep additional | sed -e "s|.*: s*||")
211
+ ini_dir=$(php --ini | grep "(php.ini)" | sed -e "s|.*: s*||")
212
+ pecl_file="$scan_dir"/99-pecl.ini
213
+ export ext_dir
214
+ mapfile -t ini_file < <(sudo find "$ini_dir/.." -name "php.ini" -exec readlink -m {} +)
215
+ link_pecl_file
216
+ configure_php
217
+ sudo rm -rf /usr/local/bin/phpunit >/dev/null 2>&1
218
+ sudo chmod 777 "${ini_file[@]}" "$pecl_file" "${tool_path_dir:?}"
219
+ sudo cp "$dist"/../src/configs/pm/*.json "$RUNNER_TOOL_CACHE/"
220
+ echo "::set-output name=php-version::$semver"
221
+ add_log "${tick:?}" "PHP" "$status PHP $semver$extra_version"
222
+ }
223
+
224
+ # Variables
225
+ version=$1
226
+ dist=$2
227
+ debconf_fix="DEBIAN_FRONTEND=noninteractive"
228
+ apt_install="sudo $debconf_fix apt-fast install -y --no-install-recommends"
229
+ scripts="${dist}"/../src/scripts
230
+
231
+ . /etc/os-release
232
+ # shellcheck source=.
233
+ . "${scripts:?}"/ext/source.sh
234
+ . "${scripts:?}"/tools/ppa.sh
235
+ . "${scripts:?}"/tools/add_tools.sh
236
+ . "${scripts:?}"/common.sh
237
+ read_env
238
+ self_hosted_setup
239
+ setup_php
@@ -1,26 +1,29 @@
1
- Function Add-ToolsHelper() {
2
- Param (
3
- [Parameter(Position = 0, Mandatory = $true)]
4
- [ValidateNotNull()]
5
- $tool
6
- )
7
- if($tool -eq "codeception") {
8
- Copy-Item $composer_bin\codecept.bat -Destination $composer_bin\codeception.bat
9
- } elseif($tool -eq "composer") {
10
- Edit-ComposerConfig $bin_dir\$tool
11
- } elseif($tool -eq "cs2pr") {
12
- (Get-Content $bin_dir/cs2pr).replace('exit(9)', 'exit(0)') | Set-Content $bin_dir/cs2pr
13
- } elseif($tool -eq "phan") {
14
- Add-Extension fileinfo >$null 2>&1
15
- Add-Extension ast >$null 2>&1
16
- } elseif($tool -eq "phive") {
17
- Add-Extension xml >$null 2>&1
18
- } elseif($tool -eq "symfony-cli") {
19
- Add-ToProfile $current_profile "symfony" "New-Alias symfony $bin_dir\symfony-cli.exe"
20
- Add-ToProfile $current_profile "symfony_cli" "New-Alias symfony-cli $bin_dir\symfony-cli.exe"
21
- } elseif($tool -match "vapor-cli") {
22
- Copy-Item $composer_bin\vapor.bat -Destination $composer_bin\vapor-cli.bat
23
- } elseif($tool -eq "wp-cli") {
24
- Copy-Item $bin_dir\wp-cli.bat -Destination $bin_dir\wp.bat
25
- }
1
+ Function Add-ToolsHelper() {
2
+ Param (
3
+ [Parameter(Position = 0, Mandatory = $true)]
4
+ [ValidateNotNull()]
5
+ $tool
6
+ )
7
+ if($tool -eq "codeception") {
8
+ Copy-Item $composer_bin\codecept.bat -Destination $composer_bin\codeception.bat
9
+ } elseif($tool -eq "composer") {
10
+ Edit-ComposerConfig $bin_dir\$tool
11
+ } elseif($tool -eq "cs2pr") {
12
+ (Get-Content $bin_dir/cs2pr).replace('exit(9)', 'exit(0)') | Set-Content $bin_dir/cs2pr
13
+ } elseif($tool -eq "phan") {
14
+ Add-Extension fileinfo >$null 2>&1
15
+ Add-Extension ast >$null 2>&1
16
+ } elseif($tool -eq "phive") {
17
+ Add-Extension xml >$null 2>&1
18
+ } elseif($tool -eq "phpDocumentor") {
19
+ Add-Extension fileinfo >$null 2>&1
20
+ Copy-Item $bin_dir\phpDocumentor.bat -Destination $bin_dir\phpdoc.bat
21
+ } elseif($tool -eq "symfony-cli") {
22
+ Add-ToProfile $current_profile "symfony" "New-Alias symfony $bin_dir\symfony-cli.exe"
23
+ Add-ToProfile $current_profile "symfony_cli" "New-Alias symfony-cli $bin_dir\symfony-cli.exe"
24
+ } elseif($tool -match "vapor-cli") {
25
+ Copy-Item $composer_bin\vapor.bat -Destination $composer_bin\vapor-cli.bat
26
+ } elseif($tool -eq "wp-cli") {
27
+ Copy-Item $bin_dir\wp-cli.bat -Destination $bin_dir\wp.bat
28
+ }
26
29
  }
@@ -1,20 +1,28 @@
1
- add_tools_helper() {
2
- tool=$1
3
- if [ "$tool" = "codeception" ]; then
4
- sudo ln -s "${composer_bin:?}"/codecept "${composer_bin:?}"/codeception
5
- elif [ "$tool" = "composer" ]; then
6
- configure_composer "${tool_path:?}"
7
- elif [ "$tool" = "cs2pr" ]; then
8
- sudo sed -i 's/\r$//; s/exit(9)/exit(0)/' "${tool_path:?}" 2>/dev/null ||
9
- sudo sed -i '' 's/\r$//; s/exit(9)/exit(0)/' "${tool_path:?}"
10
- elif [ "$tool" = "phan" ]; then
11
- add_extension fileinfo extension >/dev/null 2>&1
12
- add_extension ast extension >/dev/null 2>&1
13
- elif [ "$tool" = "phive" ]; then
14
- add_extension curl extension >/dev/null 2>&1
15
- add_extension mbstring extension >/dev/null 2>&1
16
- add_extension xml extension >/dev/null 2>&1
17
- elif [[ "$tool" =~ (symfony|vapor|wp)-cli ]]; then
18
- sudo ln -s "${tool_path:?}" "${tool_path_dir:?}"/${tool%-*}
19
- fi
1
+ add_tools_helper() {
2
+ tool=$1
3
+ if [ "$tool" = "codeception" ]; then
4
+ sudo ln -s "${composer_bin:?}"/codecept "${composer_bin:?}"/codeception
5
+ elif [ "$tool" = "composer" ]; then
6
+ configure_composer "${tool_path:?}"
7
+ elif [ "$tool" = "cs2pr" ]; then
8
+ sudo sed -i 's/\r$//; s/exit(9)/exit(0)/' "${tool_path:?}" 2>/dev/null ||
9
+ sudo sed -i '' 's/\r$//; s/exit(9)/exit(0)/' "${tool_path:?}"
10
+ elif [ "$tool" = "phan" ]; then
11
+ add_extension fileinfo extension >/dev/null 2>&1
12
+ add_extension ast extension >/dev/null 2>&1
13
+ elif [ "$tool" = "phive" ]; then
14
+ add_extension curl extension >/dev/null 2>&1
15
+ add_extension mbstring extension >/dev/null 2>&1
16
+ add_extension xml extension >/dev/null 2>&1
17
+ elif [ "$tool" = "phpDocumentor" ]; then
18
+ add_extension fileinfo extension >/dev/null 2>&1
19
+ sudo ln -s "${tool_path:?}" "${tool_path_dir:?}"/phpdocumentor 2>/dev/null || true
20
+ sudo ln -s "${tool_path:?}" "${tool_path_dir:?}"/phpdoc
21
+ elif [[ "$tool" =~ phpunit(-polyfills)?$ ]]; then
22
+ if [ -e "${tool_path_dir:?}"/phpunit ]; then
23
+ sudo cp "${tool_path_dir:?}"/phpunit "${composer_bin:?}"
24
+ fi
25
+ elif [[ "$tool" =~ (symfony|vapor|wp)-cli ]]; then
26
+ sudo ln -s "${tool_path:?}" "${tool_path_dir:?}"/"${tool%-*}"
27
+ fi
20
28
  }