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,248 +1,257 @@
1
- # Function to setup environment for self-hosted runners.
2
- self_hosted_helper() {
3
- if ! command -v brew >/dev/null; then
4
- step_log "Setup Brew"
5
- get -q -e "/tmp/install.sh" "https://raw.githubusercontent.com/Homebrew/install/master/install.sh" && /tmp/install.sh >/dev/null 2>&1
6
- add_log "${tick:?}" "Brew" "Installed Homebrew"
7
- fi
8
- }
9
-
10
- # Function to delete extension.
11
- delete_extension() {
12
- extension=$1
13
- sudo rm -rf "${scan_dir:?}"/*"$extension"* "${ext_dir:?}"/"$extension".so >/dev/null 2>&1
14
- }
15
-
16
- # Function to disable extension.
17
- disable_extension() {
18
- extension=$1
19
- sudo sed -Ei '' "/=(.*\/)?\"?$extension(.so)?$/d" "${ini_file:?}"
20
- }
21
-
22
- # Function to remove extensions.
23
- remove_extension() {
24
- extension=$1
25
- if check_extension "$extension"; then
26
- disable_extension "$extension"
27
- delete_extension "$extension"
28
- (! check_extension "$extension" && add_log "${tick:?}" ":$extension" "Removed") ||
29
- add_log "${cross:?}" ":$extension" "Could not remove $extension on PHP ${semver:?}"
30
- else
31
- add_log "${tick:?}" ":$extension" "Could not find $extension on PHP $semver"
32
- fi
33
- }
34
-
35
- # Function to fetch a brew tap.
36
- fetch_brew_tap() {
37
- tap=$1
38
- tap_user=$(dirname "$tap")
39
- tap_name=$(basename "$tap")
40
- mkdir -p "$tap_dir/$tap_user"
41
- get -s -n "" "https://github.com/$tap/archive/master.tar.gz" | sudo tar -xzf - -C "$tap_dir/$tap_user"
42
- if [ -d "$tap_dir/$tap_user/$tap_name-master" ]; then
43
- sudo mv "$tap_dir/$tap_user/$tap_name-master" "$tap_dir/$tap_user/$tap_name"
44
- fi
45
- }
46
-
47
- # Function to add a brew tap.
48
- add_brew_tap() {
49
- tap=$1
50
- if ! [ -d "$tap_dir/$tap" ]; then
51
- if [ "${runner:?}" = "self-hosted" ]; then
52
- brew tap --shallow "$tap" >/dev/null 2>&1
53
- else
54
- fetch_brew_tap "$tap" >/dev/null 2>&1
55
- if ! [ -d "$tap_dir/$tap" ]; then
56
- brew tap --shallow "$tap" >/dev/null 2>&1
57
- fi
58
- fi
59
- fi
60
- }
61
-
62
- # Function to install a php extension from shivammathur/extensions tap.
63
- add_brew_extension() {
64
- formula=$1
65
- prefix=$2
66
- extension="$(echo "$formula" | sed -E "s/pecl_|[0-9]//g")"
67
- enable_extension "$extension" "$prefix"
68
- if check_extension "$extension"; then
69
- add_log "${tick:?}" "$extension" "Enabled"
70
- else
71
- add_brew_tap shivammathur/homebrew-php
72
- add_brew_tap shivammathur/homebrew-extensions
73
- sudo mv "$tap_dir"/shivammathur/homebrew-extensions/.github/deps/"$formula"/* "$tap_dir/homebrew/homebrew-core/Formula/" 2>/dev/null || true
74
- update_dependencies >/dev/null 2>&1
75
- brew install -f "$formula@$version" >/dev/null 2>&1
76
- sudo cp "$brew_prefix/opt/$formula@$version/$extension.so" "$ext_dir"
77
- add_extension_log "$extension" "Installed and enabled"
78
- fi
79
- }
80
-
81
- # Function to setup extensions.
82
- add_extension() {
83
- extension=$1
84
- prefix=$2
85
- enable_extension "$extension" "$prefix"
86
- if check_extension "$extension"; then
87
- add_log "${tick:?}" "$extension" "Enabled"
88
- else
89
- if [[ "$version" =~ ${old_versions:?} ]] && [ "$extension" = "imagick" ]; then
90
- run_script "php5-darwin" "${version/./}" "$extension" >/dev/null 2>&1
91
- else
92
- pecl_install "$extension" >/dev/null 2>&1 &&
93
- if [[ "$version" =~ ${old_versions:?} ]]; then echo "$prefix=$ext_dir/$extension.so" >>"$ini_file"; fi
94
- fi
95
- add_extension_log "$extension" "Installed and enabled"
96
- fi
97
- }
98
-
99
- # Function to handle request to add phpize and php-config.
100
- add_devtools() {
101
- tool=$1
102
- add_log "${tick:?}" "$tool" "Added $tool $semver"
103
- }
104
-
105
- # Function to handle request to add PECL.
106
- add_pecl() {
107
- configure_pecl >/dev/null 2>&1
108
- pecl_version=$(get_tool_version "pecl" "version")
109
- add_log "${tick:?}" "PECL" "Found PECL $pecl_version"
110
- }
111
-
112
- # Function to link all libraries of a formula.
113
- link_libraries() {
114
- formula=$1
115
- formula_prefix="$(brew --prefix "$formula")"
116
- sudo mkdir -p "$formula_prefix"/lib
117
- for lib in "$formula_prefix"/lib/*.dylib; do
118
- lib_name=$(basename "$lib")
119
- sudo cp -a "$lib" "$brew_prefix/lib/$lib_name" 2>/dev/null || true
120
- done
121
- }
122
-
123
- # Patch brew to overwrite packages.
124
- patch_brew() {
125
- formula_installer="$brew_repo"/Library/Homebrew/formula_installer.rb
126
- code=" keg.link(verbose: verbose?"
127
- sudo sed -i '' "s/$code)/$code, overwrite: true)/" "$formula_installer"
128
- # shellcheck disable=SC2064
129
- trap "sudo sed -i '' 's/$code, overwrite: true)/$code)/' $formula_installer" exit
130
- }
131
-
132
- # Helper function to update the dependencies.
133
- update_dependencies_helper() {
134
- dependency=$1
135
- get -q -n "$tap_dir/homebrew/homebrew-core/Formula/$dependency.rb" "https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/$dependency.rb"
136
- link_libraries "$dependency"
137
- }
138
-
139
- # Function to update dependencies.
140
- update_dependencies() {
141
- if ! [ -e /tmp/update_dependencies ] && [ "${runner:?}" != "self-hosted" ] && [ "${ImageOS:-}" != "" ] && [ "${ImageVersion:-}" != "" ]; then
142
- patch_brew
143
- while read -r dependency; do
144
- update_dependencies_helper "$dependency" &
145
- to_wait+=($!)
146
- done <"$tap_dir/shivammathur/homebrew-php/.github/deps/${ImageOS:?}_${ImageVersion:?}"
147
- wait "${to_wait[@]}"
148
- echo '' | sudo tee /tmp/update_dependencies >/dev/null 2>&1
149
- fi
150
- }
151
-
152
- # Function to fix dependencies on install PHP version.
153
- fix_dependencies() {
154
- broken_deps_paths=$(php -v 2>&1 | grep -Eo '/opt/[a-zA-Z0-9@\.]+')
155
- if [ "x$broken_deps_paths" != "x" ]; then
156
- update_dependencies
157
- IFS=" " read -r -a formulae <<< "$(echo "$broken_deps_paths" | tr '\n' ' ' | sed 's|/opt/||g' 2>&1)$php_formula"
158
- brew reinstall "${formulae[@]}"
159
- brew link --force --overwrite "$php_formula" || true
160
- fi
161
- }
162
-
163
- # Function to get PHP version if it is already installed using Homebrew.
164
- get_brewed_php() {
165
- php_cellar="$brew_prefix"/Cellar/php
166
- if [ -d "$php_cellar" ] && ! [[ "$(find "$php_cellar" -maxdepth 1 -name "$version*" | wc -l 2>/dev/null)" -eq 0 ]]; then
167
- php-config --version 2>/dev/null | cut -c 1-3
168
- else
169
- echo 'false';
170
- fi
171
- }
172
-
173
- # Function to setup PHP 5.6 and newer using Homebrew.
174
- add_php() {
175
- action=$1
176
- existing_version=$2
177
- add_brew_tap shivammathur/homebrew-php
178
- update_dependencies
179
- if [ "$existing_version" != "false" ]; then
180
- ([ "$action" = "upgrade" ] && brew upgrade -f "$php_formula") || brew unlink "$php_formula"
181
- else
182
- brew install -f "$php_formula"
183
- fi
184
- brew link --force --overwrite "$php_formula"
185
- }
186
-
187
- # Function to get extra version.
188
- php_extra_version() {
189
- if [[ ${version:?} =~ ${nightly_versions:?} ]]; then
190
- echo " ($(brew cat "$php_formula" | grep -Eo "commit=[0-9a-zA-Z]+" | cut -d'=' -f 2))"
191
- fi
192
- }
193
-
194
- # Function to Setup PHP.
195
- setup_php() {
196
- step_log "Setup PHP"
197
- existing_version=$(get_brewed_php)
198
- if [[ "$version" =~ ${old_versions:?} ]]; then
199
- run_script "php5-darwin" "${version/./}" >/dev/null 2>&1
200
- status="Installed"
201
- elif [ "$existing_version" != "$version" ]; then
202
- add_php "install" "$existing_version" >/dev/null 2>&1
203
- status="Installed"
204
- elif [ "$existing_version" = "$version" ] && [ "${update:?}" = "true" ]; then
205
- add_php "upgrade" "$existing_version" >/dev/null 2>&1
206
- status="Updated to"
207
- else
208
- status="Found"
209
- fix_dependencies >/dev/null 2>&1
210
- fi
211
- ini_file=$(php -d "date.timezone=UTC" --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
212
- sudo chmod 777 "$ini_file" "${tool_path_dir:?}"
213
- configure_php
214
- ext_dir=$(php -i | grep -Ei "extension_dir => /" | sed -e "s|.*=> s*||")
215
- scan_dir=$(php --ini | grep additional | sed -e "s|.*: s*||")
216
- sudo mkdir -m 777 -p "$ext_dir" "$HOME/.composer"
217
- semver=$(php_semver)
218
- extra_version=$(php_extra_version)
219
- if [ "${semver%.*}" != "$version" ]; then
220
- add_log "$cross" "PHP" "Could not setup PHP $version"
221
- exit 1
222
- fi
223
-
224
- sudo cp "$dist"/../src/configs/*.json "$RUNNER_TOOL_CACHE/"
225
- echo "::set-output name=php-version::$semver"
226
- add_log "$tick" "PHP" "$status PHP $semver$extra_version"
227
- }
228
-
229
- # Variables
230
- version=$1
231
- dist=$2
232
- php_formula=shivammathur/php/php@"$version"
233
- brew_prefix="$(brew --prefix)"
234
- brew_repo="$(brew --repository)"
235
- tap_dir="$brew_repo"/Library/Taps
236
- scripts="${dist}"/../src/scripts
237
- export HOMEBREW_CHANGE_ARCH_TO_ARM=1
238
- export HOMEBREW_NO_INSTALL_CLEANUP=1
239
- export HOMEBREW_NO_AUTO_UPDATE=1
240
- export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
241
-
242
- # shellcheck source=.
243
- . "${scripts:?}"/ext/source.sh
244
- . "${scripts:?}"/tools/add_tools.sh
245
- . "${scripts:?}"/common.sh
246
- read_env
247
- self_hosted_setup
248
- setup_php
1
+ # Function to setup environment for self-hosted runners.
2
+ self_hosted_helper() {
3
+ if ! command -v brew >/dev/null; then
4
+ step_log "Setup Brew"
5
+ get -q -e "/tmp/install.sh" "https://raw.githubusercontent.com/Homebrew/install/master/install.sh" && /tmp/install.sh >/dev/null 2>&1
6
+ add_log "${tick:?}" "Brew" "Installed Homebrew"
7
+ fi
8
+ }
9
+
10
+ # Disable dependency extensions
11
+ disable_dependency_extensions() {
12
+ local extension=$1
13
+ formula_file="$tap_dir/$ext_tap/Formula/$extension@${version:?}.rb"
14
+ if [ -e "$formula_file" ]; then
15
+ IFS=" " read -r -a dependency_extensions <<< "$(grep -Eo "shivammathur.*@" "$formula_file" | xargs -I {} -n 1 basename '{}' | cut -d '@' -f 1 | tr '\n' ' ')"
16
+ for dependency_extension in "${dependency_extensions[@]}"; do
17
+ sudo sed -Ei '' "/=(.*\/)?\"?$dependency_extension(.so)?$/d" "${ini_file:?}"
18
+ done
19
+ fi
20
+ }
21
+
22
+ # Helper function to disable an extension.
23
+ disable_extension_helper() {
24
+ local extension=$1
25
+ local disable_dependents=${2:-false}
26
+ if [ "$disable_dependents" = "true" ]; then
27
+ disable_extension_dependents "$extension"
28
+ fi
29
+ sudo sed -Ei '' "/=(.*\/)?\"?$extension(.so)?$/d" "${ini_file:?}"
30
+ sudo rm -rf "$scan_dir"/*"$extension"*
31
+ }
32
+
33
+ # Function to fetch a brew tap.
34
+ fetch_brew_tap() {
35
+ tap=$1
36
+ tap_user=$(dirname "$tap")
37
+ tap_name=$(basename "$tap")
38
+ mkdir -p "$tap_dir/$tap_user"
39
+ get -s -n "" "https://github.com/$tap/archive/master.tar.gz" | sudo tar -xzf - -C "$tap_dir/$tap_user"
40
+ if [ -d "$tap_dir/$tap_user/$tap_name-master" ]; then
41
+ sudo mv "$tap_dir/$tap_user/$tap_name-master" "$tap_dir/$tap_user/$tap_name"
42
+ fi
43
+ }
44
+
45
+ # Function to add a brew tap.
46
+ add_brew_tap() {
47
+ tap=$1
48
+ if ! [ -d "$tap_dir/$tap" ]; then
49
+ if [ "${runner:?}" = "self-hosted" ]; then
50
+ brew tap "$tap" >/dev/null 2>&1
51
+ else
52
+ fetch_brew_tap "$tap" >/dev/null 2>&1
53
+ if ! [ -d "$tap_dir/$tap" ]; then
54
+ brew tap "$tap" >/dev/null 2>&1
55
+ fi
56
+ fi
57
+ fi
58
+ }
59
+
60
+ # Function to install a php extension from shivammathur/extensions tap.
61
+ add_brew_extension() {
62
+ formula=$1
63
+ prefix=$2
64
+ extension=$(grep "$formula=" "$dist"/../src/configs/brew_extensions | cut -d '=' -f 2)
65
+ [[ -z "$extension" ]] && extension="$(echo "$formula" | sed -E "s/pecl_|[0-9]//g")"
66
+ enable_extension "$extension" "$prefix"
67
+ if check_extension "$extension"; then
68
+ add_log "${tick:?}" "$extension" "Enabled"
69
+ else
70
+ add_brew_tap "$php_tap"
71
+ add_brew_tap "$ext_tap"
72
+ sudo mv "$tap_dir"/"$ext_tap"/.github/deps/"$formula"/* "$core_repo/Formula/" 2>/dev/null || true
73
+ update_dependencies >/dev/null 2>&1
74
+ disable_dependency_extensions "$extension" >/dev/null 2>&1
75
+ brew install -f "$formula@$version" >/dev/null 2>&1
76
+ sudo cp "$brew_prefix/opt/$formula@$version/$extension.so" "$ext_dir"
77
+ add_extension_log "$extension" "Installed and enabled"
78
+ fi
79
+ }
80
+
81
+ # Function to setup extensions.
82
+ add_extension() {
83
+ local extension=$1
84
+ prefix=$2
85
+ enable_extension "$extension" "$prefix"
86
+ if check_extension "$extension"; then
87
+ add_log "${tick:?}" "$extension" "Enabled"
88
+ else
89
+ if [[ "$version" =~ ${old_versions:?} ]] && [ "$extension" = "imagick" ]; then
90
+ run_script "php5-darwin" "${version/./}" "$extension" >/dev/null 2>&1
91
+ else
92
+ pecl_install "$extension" >/dev/null 2>&1 &&
93
+ if [[ "$version" =~ ${old_versions:?} ]]; then echo "$prefix=$ext_dir/$extension.so" >>"$ini_file"; fi
94
+ fi
95
+ add_extension_log "$extension" "Installed and enabled"
96
+ fi
97
+ }
98
+
99
+ # Function to handle request to add phpize and php-config.
100
+ add_devtools() {
101
+ tool=$1
102
+ add_log "${tick:?}" "$tool" "Added $tool $semver"
103
+ }
104
+
105
+ # Function to handle request to add PECL.
106
+ add_pecl() {
107
+ configure_pecl >/dev/null 2>&1
108
+ pear_version=$(get_tool_version "pecl" "version")
109
+ add_log "${tick:?}" "PECL" "Found PECL $pear_version"
110
+ }
111
+
112
+ # Function to link all libraries of a formula.
113
+ link_libraries() {
114
+ formula=$1
115
+ formula_prefix="$(brew --prefix "$formula")"
116
+ sudo mkdir -p "$formula_prefix"/lib
117
+ for lib in "$formula_prefix"/lib/*.dylib; do
118
+ lib_name=$(basename "$lib")
119
+ sudo cp -a "$lib" "$brew_prefix/lib/$lib_name" 2>/dev/null || true
120
+ done
121
+ }
122
+
123
+ # Patch brew to overwrite packages.
124
+ patch_brew() {
125
+ formula_installer="$brew_repo"/Library/Homebrew/formula_installer.rb
126
+ code=" keg.link(verbose: verbose?"
127
+ sudo sed -i '' "s/$code)/$code, overwrite: true)/" "$formula_installer"
128
+ # shellcheck disable=SC2064
129
+ trap "sudo sed -i '' 's/$code, overwrite: true)/$code)/' $formula_installer" exit
130
+ }
131
+
132
+ # Helper function to update the dependencies.
133
+ update_dependencies_helper() {
134
+ dependency=$1
135
+ get -q -n "$core_repo/Formula/$dependency.rb" "https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/$dependency.rb"
136
+ link_libraries "$dependency"
137
+ }
138
+
139
+ # Function to update dependencies.
140
+ update_dependencies() {
141
+ if ! [ -e /tmp/update_dependencies ]; then
142
+ if [ "${runner:?}" != "self-hosted" ] && [ "${ImageOS:-}" != "" ] && [ "${ImageVersion:-}" != "" ]; then
143
+ patch_brew
144
+ while read -r dependency; do
145
+ update_dependencies_helper "$dependency" &
146
+ to_wait+=($!)
147
+ done <"$tap_dir/$php_tap/.github/deps/${ImageOS:?}_${ImageVersion:?}"
148
+ wait "${to_wait[@]}"
149
+ else
150
+ git -C "$core_repo" fetch origin master && git -C "$core_repo" reset --hard origin/master
151
+ fi
152
+ echo '' | sudo tee /tmp/update_dependencies >/dev/null 2>&1
153
+ fi
154
+ }
155
+
156
+ # Function to fix dependencies on install PHP version.
157
+ fix_dependencies() {
158
+ broken_deps_paths=$(php -v 2>&1 | grep -Eo '/opt/[a-zA-Z0-9@\.]+')
159
+ if [ "x$broken_deps_paths" != "x" ]; then
160
+ update_dependencies
161
+ IFS=" " read -r -a formulae <<< "$(echo "$broken_deps_paths" | tr '\n' ' ' | sed 's|/opt/||g' 2>&1)$php_formula"
162
+ brew reinstall "${formulae[@]}"
163
+ brew link --force --overwrite "$php_formula" || true
164
+ fi
165
+ }
166
+
167
+ # Function to get PHP version if it is already installed using Homebrew.
168
+ get_brewed_php() {
169
+ php_cellar="$brew_prefix"/Cellar/php
170
+ if [ -d "$php_cellar" ] && ! [[ "$(find "$php_cellar" -maxdepth 1 -name "$version*" | wc -l 2>/dev/null)" -eq 0 ]]; then
171
+ php-config --version 2>/dev/null | cut -c 1-3
172
+ else
173
+ echo 'false';
174
+ fi
175
+ }
176
+
177
+ # Function to setup PHP 5.6 and newer using Homebrew.
178
+ add_php() {
179
+ action=$1
180
+ existing_version=$2
181
+ add_brew_tap "$php_tap"
182
+ update_dependencies
183
+ if [ "$existing_version" != "false" ]; then
184
+ ([ "$action" = "upgrade" ] && brew upgrade -f "$php_formula") || brew unlink "$php_formula"
185
+ else
186
+ brew install -f "$php_formula"
187
+ fi
188
+ brew link --force --overwrite "$php_formula"
189
+ }
190
+
191
+ # Function to get extra version.
192
+ php_extra_version() {
193
+ php_formula_file="$tap_dir"/"$php_tap"/Formula/php@"$version".rb
194
+ if [ -e "$php_formula_file" ] && ! grep -q "deprecate!" "$php_formula_file" && grep -Eq "archive/[0-9a-zA-Z]+" "$php_formula_file"; then
195
+ echo " ($(grep -Eo "archive/[0-9a-zA-Z]+" "$php_formula_file" | cut -d'/' -f 2))"
196
+ fi
197
+ }
198
+
199
+ # Function to Setup PHP.
200
+ setup_php() {
201
+ step_log "Setup PHP"
202
+ existing_version=$(get_brewed_php)
203
+ if [[ "$version" =~ ${old_versions:?} ]]; then
204
+ run_script "php5-darwin" "${version/./}" >/dev/null 2>&1
205
+ status="Installed"
206
+ elif [ "$existing_version" != "$version" ]; then
207
+ add_php "install" "$existing_version" >/dev/null 2>&1
208
+ status="Installed"
209
+ elif [ "$existing_version" = "$version" ] && [ "${update:?}" = "true" ]; then
210
+ add_php "upgrade" "$existing_version" >/dev/null 2>&1
211
+ status="Updated to"
212
+ else
213
+ status="Found"
214
+ fix_dependencies >/dev/null 2>&1
215
+ fi
216
+ ini_file=$(php -d "date.timezone=UTC" --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||" | sed "s/ //g")
217
+ sudo chmod 777 "$ini_file" "${tool_path_dir:?}"
218
+ configure_php
219
+ ext_dir=$(php -i | grep -Ei "extension_dir => /" | sed -e "s|.*=> s*||")
220
+ scan_dir=$(php --ini | grep additional | sed -e "s|.*: s*||")
221
+ sudo mkdir -m 777 -p "$ext_dir" "$HOME/.composer"
222
+ semver=$(php_semver)
223
+ extra_version=$(php_extra_version)
224
+ if [ "${semver%.*}" != "$version" ]; then
225
+ add_log "${cross:?}" "PHP" "Could not setup PHP $version"
226
+ exit 1
227
+ fi
228
+
229
+ sudo cp "$dist"/../src/configs/pm/*.json "$RUNNER_TOOL_CACHE/"
230
+ echo "::set-output name=php-version::$semver"
231
+ add_log "$tick" "PHP" "$status PHP $semver$extra_version"
232
+ }
233
+
234
+ # Variables
235
+ version=$1
236
+ dist=$2
237
+ php_formula=shivammathur/php/php@"$version"
238
+ brew_prefix="$(brew --prefix)"
239
+ brew_repo="$(brew --repository)"
240
+ tap_dir="$brew_repo"/Library/Taps
241
+ core_repo="$tap_dir"/homebrew/homebrew-core
242
+ scripts="${dist}"/../src/scripts
243
+ ext_tap=shivammathur/homebrew-extensions
244
+ php_tap=shivammathur/homebrew-php
245
+ export HOMEBREW_CHANGE_ARCH_TO_ARM=1
246
+ export HOMEBREW_DEVELOPER=1
247
+ export HOMEBREW_NO_INSTALL_CLEANUP=1
248
+ export HOMEBREW_NO_AUTO_UPDATE=1
249
+ export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
250
+
251
+ # shellcheck source=.
252
+ . "${scripts:?}"/ext/source.sh
253
+ . "${scripts:?}"/tools/add_tools.sh
254
+ . "${scripts:?}"/common.sh
255
+ read_env
256
+ self_hosted_setup
257
+ setup_php
@@ -1,32 +1,32 @@
1
- # Function to install blackfire extension.
2
- Function Add-Blackfire() {
3
- Param (
4
- [Parameter(Position = 0, Mandatory = $true)]
5
- [ValidateNotNull()]
6
- [string]
7
- $extension
8
- )
9
- try {
10
- $no_dot_version = $version.replace('.', '')
11
- $extension_version = $extension.split('-')[1]
12
- if ($extension_version -notmatch "\S") {
13
- if($version -lt '7.0') {
14
- $extension_version = '1.50.0'
15
- } else {
16
- $extension_version = (Invoke-RestMethod https://blackfire.io/api/v1/releases).probe.php
17
- }
18
- }
19
- if (Test-Path $ext_dir\blackfire.dll) {
20
- Enable-PhpExtension -Extension blackfire -Path $php_dir
21
- $status="Enabled"
22
- } else {
23
- $nts = if (!$installed.ThreadSafe) { "_nts" } else { "" }
24
- Invoke-WebRequest -Uri "https://packages.blackfire.io/binaries/blackfire-php/${extension_version}/blackfire-php-windows_${arch}-php-${no_dot_version}${nts}.dll" -OutFile $ext_dir\blackfire.dll > $null 2>&1
25
- Enable-PhpExtension -Extension blackfire -Path $php_dir
26
- $status="Installed and enabled"
27
- }
28
- Add-Log $tick $extension $status
29
- } catch {
30
- Add-Log $cross $extension "Could not install $extension on PHP $($installed.FullVersion)"
31
- }
32
- }
1
+ # Function to install blackfire extension.
2
+ Function Add-Blackfire() {
3
+ Param (
4
+ [Parameter(Position = 0, Mandatory = $true)]
5
+ [ValidateNotNull()]
6
+ [string]
7
+ $extension
8
+ )
9
+ try {
10
+ $no_dot_version = $version.replace('.', '')
11
+ $extension_version = $extension.split('-')[1]
12
+ if ($extension_version -notmatch "\S") {
13
+ if($version -lt '7.0') {
14
+ $extension_version = '1.50.0'
15
+ } else {
16
+ $extension_version = (Invoke-RestMethod https://blackfire.io/api/v1/releases).probe.php
17
+ }
18
+ }
19
+ if (Test-Path $ext_dir\blackfire.dll) {
20
+ Enable-PhpExtension -Extension blackfire -Path $php_dir
21
+ $status="Enabled"
22
+ } else {
23
+ $nts = if (!$installed.ThreadSafe) { "_nts" } else { "" }
24
+ Invoke-WebRequest -Uri "https://packages.blackfire.io/binaries/blackfire-php/${extension_version}/blackfire-php-windows_${arch}-php-${no_dot_version}${nts}.dll" -OutFile $ext_dir\blackfire.dll > $null 2>&1
25
+ Enable-PhpExtension -Extension blackfire -Path $php_dir
26
+ $status="Installed and enabled"
27
+ }
28
+ Add-Log $tick $extension $status
29
+ } catch {
30
+ Add-Log $cross $extension "Could not install $extension on PHP $($installed.FullVersion)"
31
+ }
32
+ }
@@ -1,21 +1,22 @@
1
- # Function to install blackfire extension.
2
- add_blackfire() {
3
- extension=$1
4
- version=${version:?}
5
- no_dot_version=${version/./}
6
- platform=$(uname -s | tr '[:upper:]' '[:lower:]')
7
- extension_version=$(echo "$extension" | cut -d '-' -f 2)
8
- blackfire_ini_file="${pecl_file:-${ini_file[@]}}"
9
- if [ ! -e "${ext_dir:?}/blackfire.so" ]; then
10
- if [ "$extension_version" = "blackfire" ]; then
11
- if [[ ${version:?} =~ 5.[3-6] ]]; then
12
- extension_version='1.50.0'
13
- else
14
- extension_version=$(get -s -n "" https://blackfire.io/api/v1/releases | grep -Eo 'php":"([0-9]+.[0-9]+.[0-9]+)' | cut -d '"' -f 3)
15
- fi
16
- fi
17
- get -q -n "${ext_dir:?}/blackfire.so" https://packages.blackfire.io/binaries/blackfire-php/"$extension_version"/blackfire-php-"$platform"_amd64-php-"$no_dot_version".so >/dev/null 2>&1
18
- fi
19
- echo "extension=blackfire.so" | sudo tee -a "$blackfire_ini_file" >/dev/null 2>&1
20
- add_extension_log "$extension-$extension_version" "Installed and enabled"
21
- }
1
+ # Function to install blackfire extension.
2
+ add_blackfire() {
3
+ local extension=$1
4
+ version=${version:?}
5
+ no_dot_version=${version/./}
6
+ platform=$(uname -s | tr '[:upper:]' '[:lower:]')
7
+ extension_version=$(echo "$extension" | cut -d '-' -f 2)
8
+ status='Enabled'
9
+ if ! shared_extension blackfire; then
10
+ status='Installed and enabled'
11
+ if [ "$extension_version" = "blackfire" ]; then
12
+ if [[ ${version:?} =~ 5.[3-6] ]]; then
13
+ extension_version='1.50.0'
14
+ else
15
+ extension_version=$(get -s -n "" https://blackfire.io/api/v1/releases | grep -Eo 'php":"([0-9]+.[0-9]+.[0-9]+)' | cut -d '"' -f 3)
16
+ fi
17
+ fi
18
+ get -q -n "${ext_dir:?}/blackfire.so" https://packages.blackfire.io/binaries/blackfire-php/"$extension_version"/blackfire-php-"$platform"_amd64-php-"$no_dot_version".so >/dev/null 2>&1
19
+ fi
20
+ enable_extension blackfire extension
21
+ add_extension_log blackfire "$status"
22
+ }