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.
- package/LICENSE +21 -21
- package/README.md +977 -936
- package/package.json +66 -56
- package/src/config.ts +82 -82
- package/src/configs/brew_extensions +30 -0
- package/src/configs/os_releases.csv +17 -0
- package/src/configs/php-versions.json +6 -5
- package/src/configs/{php.json → pm/php.json} +29 -29
- package/src/configs/{phpunit.json → pm/phpunit.json} +24 -24
- package/src/configs/tools.json +256 -234
- package/src/configs/tools_schema.json +114 -103
- package/src/coverage.ts +169 -142
- package/src/extensions.ts +363 -349
- package/src/install.ts +79 -82
- package/src/scripts/common.sh +366 -314
- package/src/scripts/darwin.sh +257 -248
- package/src/scripts/ext/blackfire.ps1 +32 -32
- package/src/scripts/ext/blackfire.sh +22 -21
- package/src/scripts/ext/couchbase.sh +43 -43
- package/src/scripts/ext/cubrid.sh +60 -60
- package/src/scripts/ext/extension_map.php +109 -0
- package/src/scripts/ext/firebird.ps1 +19 -19
- package/src/scripts/ext/firebird.sh +39 -35
- package/src/scripts/ext/gearman.sh +22 -22
- package/src/scripts/ext/geos.sh +17 -17
- package/src/scripts/ext/http.ps1 +54 -54
- package/src/scripts/ext/http.sh +120 -120
- package/src/scripts/ext/intl.sh +23 -23
- package/src/scripts/ext/ioncube.ps1 +33 -32
- package/src/scripts/ext/ioncube.sh +21 -19
- package/src/scripts/ext/oci.ps1 +60 -60
- package/src/scripts/ext/oci.sh +65 -63
- package/src/scripts/ext/patches/firebird.sh +11 -11
- package/src/scripts/ext/patches/geos.sh +7 -7
- package/src/scripts/ext/patches/http.sh +11 -11
- package/src/scripts/ext/patches/pdo_oci.sh +6 -6
- package/src/scripts/ext/patches/phpize.sh +26 -26
- package/src/scripts/ext/patches/protobuf.sh +4 -4
- package/src/scripts/ext/phalcon.ps1 +54 -55
- package/src/scripts/ext/phalcon.sh +59 -59
- package/src/scripts/ext/source.sh +144 -144
- package/src/scripts/linux.sh +239 -280
- package/src/scripts/tools/add_tools.ps1 +28 -25
- package/src/scripts/tools/add_tools.sh +27 -19
- package/src/scripts/tools/blackfire.ps1 +19 -21
- package/src/scripts/tools/blackfire.sh +40 -35
- package/src/scripts/tools/grpc_php_plugin.ps1 +21 -21
- package/src/scripts/tools/grpc_php_plugin.sh +58 -61
- package/src/scripts/tools/ppa.sh +189 -0
- package/src/scripts/tools/protoc.ps1 +38 -38
- package/src/scripts/tools/protoc.sh +28 -28
- package/src/scripts/win32.ps1 +566 -471
- package/src/tools.ts +538 -509
- package/src/utils.ts +503 -497
- package/.eslintrc.json +0 -16
- package/.github/CODE_OF_CONDUCT.md +0 -76
- package/.github/CONTRIBUTING.md +0 -70
- package/.github/FUNDING.yml +0 -7
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -42
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -26
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -37
- package/.github/SECURITY.md +0 -29
- package/.github/workflows/docs.yml +0 -77
- package/.github/workflows/node-workflow.yml +0 -51
- package/.github/workflows/workflow.yml +0 -78
- package/.idea/workspace.xml +0 -113
- package/.prettierrc.json +0 -12
- package/__tests__/config.test.ts +0 -52
- package/__tests__/coverage.test.ts +0 -110
- package/__tests__/extensions.test.ts +0 -261
- package/__tests__/install.test.ts +0 -175
- package/__tests__/tools.test.ts +0 -490
- package/__tests__/utils.test.ts +0 -303
- package/action.yml +0 -29
- package/dist/index.js +0 -3001
- package/examples/bedrock.yml +0 -32
- package/examples/blackfire-player.yml +0 -31
- package/examples/blackfire.yml +0 -31
- package/examples/cakephp-mysql.yml +0 -114
- package/examples/cakephp-postgres.yml +0 -112
- package/examples/cakephp.yml +0 -92
- package/examples/codeigniter.yml +0 -34
- package/examples/laravel-mysql.yml +0 -74
- package/examples/laravel-postgres.yml +0 -74
- package/examples/laravel.yml +0 -42
- package/examples/lumen-mysql.yml +0 -74
- package/examples/lumen-postgres.yml +0 -74
- package/examples/lumen.yml +0 -38
- package/examples/phalcon-mysql.yml +0 -74
- package/examples/phalcon-postgres.yml +0 -73
- package/examples/sage.yml +0 -57
- package/examples/slim-framework.yml +0 -34
- package/examples/symfony-mysql.yml +0 -57
- package/examples/symfony-postgres.yml +0 -55
- package/examples/symfony.yml +0 -39
- package/examples/yii2-mysql.yml +0 -73
- package/examples/yii2-postgres.yml +0 -71
- package/examples/zend-framework.yml +0 -36
- package/jest.config.js +0 -12
- package/lib/config.js +0 -72
- package/lib/config.js.map +0 -1
- package/lib/coverage.js +0 -88
- package/lib/coverage.js.map +0 -1
- package/lib/extensions.js +0 -201
- package/lib/extensions.js.map +0 -1
- package/lib/install.js +0 -82
- package/lib/install.js.map +0 -1
- package/lib/sapi.js +0 -64
- package/lib/tools.js +0 -387
- package/lib/tools.js.map +0 -1
- package/lib/utils.js +0 -292
- package/lib/utils.js.map +0 -1
- package/tsconfig.json +0 -18
package/src/extensions.ts
CHANGED
|
@@ -1,349 +1,363 @@
|
|
|
1
|
-
import * as utils from './utils';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Install and enable extensions for darwin
|
|
5
|
-
*
|
|
6
|
-
* @param extension_csv
|
|
7
|
-
* @param version
|
|
8
|
-
*/
|
|
9
|
-
export async function addExtensionDarwin(
|
|
10
|
-
extension_csv: string,
|
|
11
|
-
version: string
|
|
12
|
-
): Promise<string> {
|
|
13
|
-
const extensions: Array<string> = await utils.extensionArray(extension_csv);
|
|
14
|
-
let add_script = '\n';
|
|
15
|
-
let remove_script = '';
|
|
16
|
-
await utils.asyncForEach(extensions, async function (extension: string) {
|
|
17
|
-
const version_extension: string = version + extension;
|
|
18
|
-
const [ext_name, ext_version]: string[] = extension.split('-');
|
|
19
|
-
const ext_prefix = await utils.getExtensionPrefix(ext_name);
|
|
20
|
-
|
|
21
|
-
switch (true) {
|
|
22
|
-
// match :extension
|
|
23
|
-
case /^:/.test(ext_name):
|
|
24
|
-
remove_script += '\
|
|
25
|
-
return;
|
|
26
|
-
//
|
|
27
|
-
case
|
|
28
|
-
add_script +=
|
|
29
|
-
return;
|
|
30
|
-
// match
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
// match
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
// match
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
//
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
case
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
ext_name,
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
'
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
'
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
//
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
):
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
case
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
'
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
add_script +=
|
|
296
|
-
return;
|
|
297
|
-
// match
|
|
298
|
-
case /^
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
case
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
1
|
+
import * as utils from './utils';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Install and enable extensions for darwin
|
|
5
|
+
*
|
|
6
|
+
* @param extension_csv
|
|
7
|
+
* @param version
|
|
8
|
+
*/
|
|
9
|
+
export async function addExtensionDarwin(
|
|
10
|
+
extension_csv: string,
|
|
11
|
+
version: string
|
|
12
|
+
): Promise<string> {
|
|
13
|
+
const extensions: Array<string> = await utils.extensionArray(extension_csv);
|
|
14
|
+
let add_script = '\n';
|
|
15
|
+
let remove_script = '';
|
|
16
|
+
await utils.asyncForEach(extensions, async function (extension: string) {
|
|
17
|
+
const version_extension: string = version + extension;
|
|
18
|
+
const [ext_name, ext_version]: string[] = extension.split('-');
|
|
19
|
+
const ext_prefix = await utils.getExtensionPrefix(ext_name);
|
|
20
|
+
|
|
21
|
+
switch (true) {
|
|
22
|
+
// match :extension
|
|
23
|
+
case /^:/.test(ext_name):
|
|
24
|
+
remove_script += '\ndisable_extension' + ext_name.replace(/:/g, ' ');
|
|
25
|
+
return;
|
|
26
|
+
// Match none
|
|
27
|
+
case /^none$/.test(ext_name):
|
|
28
|
+
add_script += '\ndisable_all_shared';
|
|
29
|
+
return;
|
|
30
|
+
// match extensions for compiling from source
|
|
31
|
+
case /.+-.+\/.+@.+/.test(extension):
|
|
32
|
+
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
|
33
|
+
return;
|
|
34
|
+
// match 5.3blackfire...8.0blackfire
|
|
35
|
+
// match 5.3blackfire-(semver)...8.0blackfire-(semver)
|
|
36
|
+
// match couchbase, geos, pdo_oci, oci8, http, pecl_http
|
|
37
|
+
// match 5.3ioncube...7.4ioncube
|
|
38
|
+
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
|
39
|
+
case /^(5\.[3-6]|7\.[0-4]|8\.0)blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
40
|
+
version_extension
|
|
41
|
+
):
|
|
42
|
+
case /^couchbase$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(
|
|
43
|
+
extension
|
|
44
|
+
):
|
|
45
|
+
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
|
46
|
+
case /(5\.6|7\.[0-3])phalcon3|7\.[2-4]phalcon4/.test(version_extension):
|
|
47
|
+
add_script += await utils.customPackage(
|
|
48
|
+
ext_name,
|
|
49
|
+
'ext',
|
|
50
|
+
extension,
|
|
51
|
+
'darwin'
|
|
52
|
+
);
|
|
53
|
+
return;
|
|
54
|
+
// match pre-release versions. For example - xdebug-beta
|
|
55
|
+
case /.+-(stable|beta|alpha|devel|snapshot|rc|preview)/.test(extension):
|
|
56
|
+
add_script += await utils.joins(
|
|
57
|
+
'\nadd_unstable_extension',
|
|
58
|
+
ext_name,
|
|
59
|
+
ext_version,
|
|
60
|
+
ext_prefix
|
|
61
|
+
);
|
|
62
|
+
return;
|
|
63
|
+
// match semver
|
|
64
|
+
case /.+-\d+\.\d+\.\d+.*/.test(extension):
|
|
65
|
+
add_script += await utils.joins(
|
|
66
|
+
'\nadd_pecl_extension',
|
|
67
|
+
ext_name,
|
|
68
|
+
ext_version,
|
|
69
|
+
ext_prefix
|
|
70
|
+
);
|
|
71
|
+
return;
|
|
72
|
+
// match 5.3pcov to 7.0pcov
|
|
73
|
+
case /(5\.[3-6]|7\.0)pcov/.test(version_extension):
|
|
74
|
+
add_script += await utils.getUnsupportedLog('pcov', version, 'darwin');
|
|
75
|
+
return;
|
|
76
|
+
// match 5.6 and newer - amqp, apcu, expect, grpc, igbinary, imagick, imap, memcache, memcached, mongodb, msgpack, protobuf, raphf, rdkafka, redis, ssh2, swoole, xdebug, xdebug2, yaml, zmq
|
|
77
|
+
// match 7.1 and newer - pcov
|
|
78
|
+
// match 5.6 to 7.4 - propro
|
|
79
|
+
// match 7.0 and newer - vips, xlswriter
|
|
80
|
+
case /(?<!5\.[3-5])(amqp|apcu|expect|grpc|igbinary|imagick|imap|mailparse|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|ssh2|swoole|xdebug|xdebug2|yaml|zmq)/.test(
|
|
81
|
+
version_extension
|
|
82
|
+
):
|
|
83
|
+
case /(5\.6|7\.[0-4])propro/.test(version_extension):
|
|
84
|
+
case /(?<!5\.[3-6]|7\.0)pcov/.test(version_extension):
|
|
85
|
+
case /(?<!5\.[3-6])(vips|xlswriter)/.test(version_extension):
|
|
86
|
+
add_script += await utils.joins(
|
|
87
|
+
'\nadd_brew_extension',
|
|
88
|
+
ext_name,
|
|
89
|
+
ext_prefix
|
|
90
|
+
);
|
|
91
|
+
return;
|
|
92
|
+
// match sqlite
|
|
93
|
+
case /^sqlite$/.test(extension):
|
|
94
|
+
extension = 'sqlite3';
|
|
95
|
+
break;
|
|
96
|
+
default:
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
add_script += await utils.joins('\nadd_extension', extension, ext_prefix);
|
|
100
|
+
});
|
|
101
|
+
return add_script + remove_script;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Install and enable extensions for windows
|
|
106
|
+
*
|
|
107
|
+
* @param extension_csv
|
|
108
|
+
* @param version
|
|
109
|
+
*/
|
|
110
|
+
export async function addExtensionWindows(
|
|
111
|
+
extension_csv: string,
|
|
112
|
+
version: string
|
|
113
|
+
): Promise<string> {
|
|
114
|
+
const extensions: Array<string> = await utils.extensionArray(extension_csv);
|
|
115
|
+
let add_script = '\n';
|
|
116
|
+
let remove_script = '';
|
|
117
|
+
await utils.asyncForEach(extensions, async function (extension: string) {
|
|
118
|
+
const [ext_name, ext_version]: string[] = extension.split('-');
|
|
119
|
+
const version_extension: string = version + extension;
|
|
120
|
+
let matches: RegExpExecArray;
|
|
121
|
+
switch (true) {
|
|
122
|
+
// Match :extension
|
|
123
|
+
case /^:/.test(ext_name):
|
|
124
|
+
remove_script += '\nDisable-Extension' + ext_name.replace(/:/g, ' ');
|
|
125
|
+
break;
|
|
126
|
+
// Match none
|
|
127
|
+
case /^none$/.test(ext_name):
|
|
128
|
+
add_script += '\nDisable-AllShared';
|
|
129
|
+
break;
|
|
130
|
+
// match 5.3blackfire...8.0blackfire
|
|
131
|
+
// match 5.3blackfire-(semver)...8.0blackfire-(semver)
|
|
132
|
+
// match pdo_oci and oci8
|
|
133
|
+
// match 5.3ioncube...7.4ioncube
|
|
134
|
+
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
|
135
|
+
// match 7.1pecl_http...8.0pecl_http and 7.1http...8.0http
|
|
136
|
+
case /^(5\.[3-6]|7\.[0-4]|8\.0)blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
137
|
+
version_extension
|
|
138
|
+
):
|
|
139
|
+
case /^pdo_oci$|^oci8$|^pdo_firebird$/.test(extension):
|
|
140
|
+
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
|
141
|
+
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
|
142
|
+
case /^(7\.[1-4]|8\.0)(pecl_)?http/.test(version_extension):
|
|
143
|
+
add_script += await utils.customPackage(
|
|
144
|
+
ext_name,
|
|
145
|
+
'ext',
|
|
146
|
+
extension,
|
|
147
|
+
'win32'
|
|
148
|
+
);
|
|
149
|
+
return;
|
|
150
|
+
// match pre-release versions. For example - xdebug-beta
|
|
151
|
+
case /.+-(stable|beta|alpha|devel|snapshot)/.test(extension):
|
|
152
|
+
add_script += await utils.joins(
|
|
153
|
+
'\nAdd-Extension',
|
|
154
|
+
ext_name,
|
|
155
|
+
ext_version.replace('stable', '')
|
|
156
|
+
);
|
|
157
|
+
break;
|
|
158
|
+
// match extensions for compiling from source
|
|
159
|
+
case /.+-.+\/.+@.+/.test(extension):
|
|
160
|
+
add_script += await utils.getUnsupportedLog(
|
|
161
|
+
extension,
|
|
162
|
+
version,
|
|
163
|
+
'win32'
|
|
164
|
+
);
|
|
165
|
+
break;
|
|
166
|
+
// match semver without state
|
|
167
|
+
case /.+-\d+\.\d+\.\d+$/.test(extension):
|
|
168
|
+
add_script += await utils.joins(
|
|
169
|
+
'\nAdd-Extension',
|
|
170
|
+
ext_name,
|
|
171
|
+
'stable',
|
|
172
|
+
ext_version
|
|
173
|
+
);
|
|
174
|
+
break;
|
|
175
|
+
// match semver with state
|
|
176
|
+
case /.+-\d+\.\d+\.\d+[a-zA-Z]+\d*/.test(extension):
|
|
177
|
+
matches = /.+-(\d+\.\d+\.\d+)([a-zA-Z]+)\d*/.exec(
|
|
178
|
+
version_extension
|
|
179
|
+
) as RegExpExecArray;
|
|
180
|
+
add_script += await utils.joins(
|
|
181
|
+
'\nAdd-Extension',
|
|
182
|
+
ext_name,
|
|
183
|
+
matches[2].replace('preview', 'devel'),
|
|
184
|
+
matches[1]
|
|
185
|
+
);
|
|
186
|
+
break;
|
|
187
|
+
// match 7.2xdebug2 to 7.4xdebug2
|
|
188
|
+
case /7\.[2-4]xdebug2/.test(version_extension):
|
|
189
|
+
add_script += '\nAdd-Extension xdebug stable 2.9.8';
|
|
190
|
+
break;
|
|
191
|
+
// match 5.3pcov to 7.0pcov
|
|
192
|
+
case /(5\.[3-6]|7\.0)pcov/.test(version_extension):
|
|
193
|
+
add_script += await utils.getUnsupportedLog('pcov', version, 'win32');
|
|
194
|
+
break;
|
|
195
|
+
// match 5.3 to 5.6 - mysql, mysqli, mysqlnd
|
|
196
|
+
case /^5\.[3-6](?<!pdo_)(mysql|mysqli|mysqlnd)$/.test(version_extension):
|
|
197
|
+
add_script +=
|
|
198
|
+
'\nAdd-Extension mysql\nAdd-Extension mysqli\nAdd-Extension mysqlnd';
|
|
199
|
+
break;
|
|
200
|
+
// match 7.0 and newer mysql, mysqli and mysqlnd
|
|
201
|
+
case /(?<!5\.[3-6])(?<!pdo_)(mysql|mysqli|mysqlnd)$/.test(
|
|
202
|
+
version_extension
|
|
203
|
+
):
|
|
204
|
+
add_script += '\nAdd-Extension mysqli\nAdd-Extension mysqlnd';
|
|
205
|
+
break;
|
|
206
|
+
// match sqlite
|
|
207
|
+
case /^sqlite$/.test(extension):
|
|
208
|
+
extension = 'sqlite3';
|
|
209
|
+
add_script += await utils.joins('\nAdd-Extension', extension);
|
|
210
|
+
break;
|
|
211
|
+
default:
|
|
212
|
+
add_script += '\nAdd-Extension ' + extension;
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
return add_script + remove_script;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Install and enable extensions for linux
|
|
221
|
+
*
|
|
222
|
+
* @param extension_csv
|
|
223
|
+
* @param version
|
|
224
|
+
*/
|
|
225
|
+
export async function addExtensionLinux(
|
|
226
|
+
extension_csv: string,
|
|
227
|
+
version: string
|
|
228
|
+
): Promise<string> {
|
|
229
|
+
const extensions: Array<string> = await utils.extensionArray(extension_csv);
|
|
230
|
+
let add_script = '\n';
|
|
231
|
+
let remove_script = '';
|
|
232
|
+
await utils.asyncForEach(extensions, async function (extension: string) {
|
|
233
|
+
const version_extension: string = version + extension;
|
|
234
|
+
const [ext_name, ext_version]: string[] = extension.split('-');
|
|
235
|
+
const ext_prefix = await utils.getExtensionPrefix(ext_name);
|
|
236
|
+
|
|
237
|
+
switch (true) {
|
|
238
|
+
// Match :extension
|
|
239
|
+
case /^:/.test(ext_name):
|
|
240
|
+
remove_script += '\ndisable_extension' + ext_name.replace(/:/g, ' ');
|
|
241
|
+
return;
|
|
242
|
+
// Match none
|
|
243
|
+
case /^none$/.test(ext_name):
|
|
244
|
+
add_script += '\ndisable_all_shared';
|
|
245
|
+
return;
|
|
246
|
+
// match extensions for compiling from source
|
|
247
|
+
case /.+-.+\/.+@.+/.test(extension):
|
|
248
|
+
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
|
249
|
+
return;
|
|
250
|
+
// match 5.3blackfire...8.0blackfire
|
|
251
|
+
// match 5.3blackfire-(semver)...8.0blackfire-(semver)
|
|
252
|
+
// match 5.3pdo_cubrid...7.2php_cubrid, 5.3cubrid...7.4cubrid
|
|
253
|
+
// match couchbase, geos, pdo_oci, oci8, http, pecl_http
|
|
254
|
+
// match 5.3ioncube...7.4ioncube
|
|
255
|
+
// match 7.0phalcon3...7.3phalcon3 and 7.2phalcon4...7.4phalcon4
|
|
256
|
+
case /^(5\.[3-6]|7\.[0-4]|8\.0)blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
257
|
+
version_extension
|
|
258
|
+
):
|
|
259
|
+
case /^((5\.[3-6])|(7\.[0-2]))pdo_cubrid$|^((5\.[3-6])|(7\.[0-4]))cubrid$/.test(
|
|
260
|
+
version_extension
|
|
261
|
+
):
|
|
262
|
+
case /^couchbase$|^gearman$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(
|
|
263
|
+
extension
|
|
264
|
+
):
|
|
265
|
+
case /(?<!5\.[3-5])intl-[\d]+\.[\d]+$/.test(version_extension):
|
|
266
|
+
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
|
267
|
+
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
|
268
|
+
add_script += await utils.customPackage(
|
|
269
|
+
ext_name,
|
|
270
|
+
'ext',
|
|
271
|
+
extension,
|
|
272
|
+
'linux'
|
|
273
|
+
);
|
|
274
|
+
return;
|
|
275
|
+
// match pre-release versions. For example - xdebug-beta
|
|
276
|
+
case /.+-(stable|beta|alpha|devel|snapshot|rc|preview)/.test(extension):
|
|
277
|
+
add_script += await utils.joins(
|
|
278
|
+
'\nadd_unstable_extension',
|
|
279
|
+
ext_name,
|
|
280
|
+
ext_version,
|
|
281
|
+
ext_prefix
|
|
282
|
+
);
|
|
283
|
+
return;
|
|
284
|
+
// match semver versions
|
|
285
|
+
case /.+-\d+\.\d+\.\d+.*/.test(extension):
|
|
286
|
+
add_script += await utils.joins(
|
|
287
|
+
'\nadd_pecl_extension',
|
|
288
|
+
ext_name,
|
|
289
|
+
ext_version,
|
|
290
|
+
ext_prefix
|
|
291
|
+
);
|
|
292
|
+
return;
|
|
293
|
+
// match 5.3pcov to 7.0pcov
|
|
294
|
+
case /(5\.[3-6]|7\.0)pcov/.test(version_extension):
|
|
295
|
+
add_script += await utils.getUnsupportedLog('pcov', version, 'linux');
|
|
296
|
+
return;
|
|
297
|
+
// match 7.2xdebug2...7.4xdebug2
|
|
298
|
+
case /^7\.[2-4]xdebug2$/.test(version_extension):
|
|
299
|
+
add_script += await utils.joins(
|
|
300
|
+
'\nadd_pecl_extension',
|
|
301
|
+
'xdebug',
|
|
302
|
+
'2.9.8',
|
|
303
|
+
ext_prefix
|
|
304
|
+
);
|
|
305
|
+
return;
|
|
306
|
+
// match pdo extensions
|
|
307
|
+
case /^pdo[_-].+/.test(extension):
|
|
308
|
+
extension = extension.replace(/pdo[_-]|3/, '');
|
|
309
|
+
add_script += '\nadd_pdo_extension ' + extension;
|
|
310
|
+
return;
|
|
311
|
+
// match sqlite
|
|
312
|
+
case /^sqlite$/.test(extension):
|
|
313
|
+
extension = 'sqlite3';
|
|
314
|
+
break;
|
|
315
|
+
default:
|
|
316
|
+
break;
|
|
317
|
+
}
|
|
318
|
+
add_script += await utils.joins('\nadd_extension', extension, ext_prefix);
|
|
319
|
+
});
|
|
320
|
+
return add_script + remove_script;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Install and enable extensions
|
|
325
|
+
*
|
|
326
|
+
* @param extension_csv
|
|
327
|
+
* @param version
|
|
328
|
+
* @param os_version
|
|
329
|
+
* @param no_step
|
|
330
|
+
*/
|
|
331
|
+
export async function addExtension(
|
|
332
|
+
extension_csv: string,
|
|
333
|
+
version: string,
|
|
334
|
+
os_version: string,
|
|
335
|
+
no_step = false
|
|
336
|
+
): Promise<string> {
|
|
337
|
+
const log: string = await utils.stepLog('Setup Extensions', os_version);
|
|
338
|
+
let script = '\n';
|
|
339
|
+
switch (no_step) {
|
|
340
|
+
case true:
|
|
341
|
+
script += log + (await utils.suppressOutput(os_version));
|
|
342
|
+
break;
|
|
343
|
+
case false:
|
|
344
|
+
default:
|
|
345
|
+
script += log;
|
|
346
|
+
break;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
switch (os_version) {
|
|
350
|
+
case 'win32':
|
|
351
|
+
return script + (await addExtensionWindows(extension_csv, version));
|
|
352
|
+
case 'darwin':
|
|
353
|
+
return script + (await addExtensionDarwin(extension_csv, version));
|
|
354
|
+
case 'linux':
|
|
355
|
+
return script + (await addExtensionLinux(extension_csv, version));
|
|
356
|
+
default:
|
|
357
|
+
return await utils.log(
|
|
358
|
+
'Platform ' + os_version + ' is not supported',
|
|
359
|
+
os_version,
|
|
360
|
+
'error'
|
|
361
|
+
);
|
|
362
|
+
}
|
|
363
|
+
}
|