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/src/extensions.ts
CHANGED
|
@@ -31,12 +31,12 @@ export async function addExtensionDarwin(
|
|
|
31
31
|
case /.+-.+\/.+@.+/.test(extension):
|
|
32
32
|
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
|
33
33
|
return;
|
|
34
|
-
// match 5.3blackfire...8.
|
|
35
|
-
// match 5.3blackfire-(semver)...8.
|
|
34
|
+
// match 5.3blackfire...8.1blackfire
|
|
35
|
+
// match 5.3blackfire-(semver)...8.1blackfire-(semver)
|
|
36
36
|
// match couchbase, geos, pdo_oci, oci8, http, pecl_http
|
|
37
37
|
// match 5.3ioncube...7.4ioncube
|
|
38
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(
|
|
39
|
+
case /^(5\.[3-6]|7\.[0-4]|8\.[0-1])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
40
40
|
version_extension
|
|
41
41
|
):
|
|
42
42
|
case /^couchbase$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(
|
|
@@ -44,9 +44,10 @@ export async function addExtensionDarwin(
|
|
|
44
44
|
):
|
|
45
45
|
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
|
46
46
|
case /(5\.6|7\.[0-3])phalcon3|7\.[2-4]phalcon4/.test(version_extension):
|
|
47
|
+
case /(?<!5\.[3-6])(pdo_)?sqlsrv$/.test(version_extension):
|
|
47
48
|
add_script += await utils.customPackage(
|
|
48
49
|
ext_name,
|
|
49
|
-
'
|
|
50
|
+
'extensions',
|
|
50
51
|
extension,
|
|
51
52
|
'darwin'
|
|
52
53
|
);
|
|
@@ -73,11 +74,11 @@ export async function addExtensionDarwin(
|
|
|
73
74
|
case /(5\.[3-6]|7\.0)pcov/.test(version_extension):
|
|
74
75
|
add_script += await utils.getUnsupportedLog('pcov', version, 'darwin');
|
|
75
76
|
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 5.6 and newer - amqp, apcu, expect, gnupg, grpc, igbinary, imagick, imap, memcache, memcached, mongodb, msgpack, protobuf, raphf, rdkafka, redis, ssh2, swoole, xdebug, xdebug2, yaml, zmq
|
|
77
78
|
// match 7.1 and newer - pcov
|
|
78
79
|
// match 5.6 to 7.4 - propro
|
|
79
80
|
// match 7.0 and newer - vips, xlswriter
|
|
80
|
-
case /(?<!5\.[3-5])(amqp|apcu|expect|grpc|igbinary|imagick|imap|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|ssh2|swoole|xdebug|xdebug2|yaml|zmq)/.test(
|
|
81
|
+
case /(?<!5\.[3-5])(amqp|apcu|expect|gnupg|grpc|igbinary|imagick|imap|mailparse|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|ssh2|swoole|xdebug|xdebug2|yaml|zmq)/.test(
|
|
81
82
|
version_extension
|
|
82
83
|
):
|
|
83
84
|
case /(5\.6|7\.[0-4])propro/.test(version_extension):
|
|
@@ -142,7 +143,7 @@ export async function addExtensionWindows(
|
|
|
142
143
|
case /^(7\.[1-4]|8\.0)(pecl_)?http/.test(version_extension):
|
|
143
144
|
add_script += await utils.customPackage(
|
|
144
145
|
ext_name,
|
|
145
|
-
'
|
|
146
|
+
'extensions',
|
|
146
147
|
extension,
|
|
147
148
|
'win32'
|
|
148
149
|
);
|
|
@@ -231,7 +232,9 @@ export async function addExtensionLinux(
|
|
|
231
232
|
let remove_script = '';
|
|
232
233
|
await utils.asyncForEach(extensions, async function (extension: string) {
|
|
233
234
|
const version_extension: string = version + extension;
|
|
234
|
-
const [ext_name, ext_version]: string[] = extension
|
|
235
|
+
const [ext_name, ext_version]: string[] = extension
|
|
236
|
+
.split(/-(.+)/)
|
|
237
|
+
.filter(Boolean);
|
|
235
238
|
const ext_prefix = await utils.getExtensionPrefix(ext_name);
|
|
236
239
|
|
|
237
240
|
switch (true) {
|
|
@@ -247,13 +250,13 @@ export async function addExtensionLinux(
|
|
|
247
250
|
case /.+-.+\/.+@.+/.test(extension):
|
|
248
251
|
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
|
249
252
|
return;
|
|
250
|
-
// match 5.3blackfire...8.
|
|
251
|
-
// match 5.3blackfire-(semver)...8.
|
|
253
|
+
// match 5.3blackfire...8.1blackfire
|
|
254
|
+
// match 5.3blackfire-(semver)...8.1blackfire-(semver)
|
|
252
255
|
// match 5.3pdo_cubrid...7.2php_cubrid, 5.3cubrid...7.4cubrid
|
|
253
256
|
// match couchbase, geos, pdo_oci, oci8, http, pecl_http
|
|
254
257
|
// match 5.3ioncube...7.4ioncube
|
|
255
258
|
// 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(
|
|
259
|
+
case /^(5\.[3-6]|7\.[0-4]|8\.[0-1])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
|
257
260
|
version_extension
|
|
258
261
|
):
|
|
259
262
|
case /^((5\.[3-6])|(7\.[0-2]))pdo_cubrid$|^((5\.[3-6])|(7\.[0-4]))cubrid$/.test(
|
|
@@ -265,9 +268,10 @@ export async function addExtensionLinux(
|
|
|
265
268
|
case /(?<!5\.[3-5])intl-[\d]+\.[\d]+$/.test(version_extension):
|
|
266
269
|
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
|
267
270
|
case /^7\.[0-3]phalcon3$|^7\.[2-4]phalcon4$/.test(version_extension):
|
|
271
|
+
case /(?<!5\.[3-6])(pdo_)?sqlsrv$/.test(version_extension):
|
|
268
272
|
add_script += await utils.customPackage(
|
|
269
273
|
ext_name,
|
|
270
|
-
'
|
|
274
|
+
'extensions',
|
|
271
275
|
extension,
|
|
272
276
|
'linux'
|
|
273
277
|
);
|
|
@@ -325,20 +329,20 @@ export async function addExtensionLinux(
|
|
|
325
329
|
*
|
|
326
330
|
* @param extension_csv
|
|
327
331
|
* @param version
|
|
328
|
-
* @param
|
|
332
|
+
* @param os
|
|
329
333
|
* @param no_step
|
|
330
334
|
*/
|
|
331
335
|
export async function addExtension(
|
|
332
336
|
extension_csv: string,
|
|
333
337
|
version: string,
|
|
334
|
-
|
|
338
|
+
os: string,
|
|
335
339
|
no_step = false
|
|
336
340
|
): Promise<string> {
|
|
337
|
-
const log: string = await utils.stepLog('Setup Extensions',
|
|
341
|
+
const log: string = await utils.stepLog('Setup Extensions', os);
|
|
338
342
|
let script = '\n';
|
|
339
343
|
switch (no_step) {
|
|
340
344
|
case true:
|
|
341
|
-
script += log + (await utils.suppressOutput(
|
|
345
|
+
script += log + (await utils.suppressOutput(os));
|
|
342
346
|
break;
|
|
343
347
|
case false:
|
|
344
348
|
default:
|
|
@@ -346,7 +350,7 @@ export async function addExtension(
|
|
|
346
350
|
break;
|
|
347
351
|
}
|
|
348
352
|
|
|
349
|
-
switch (
|
|
353
|
+
switch (os) {
|
|
350
354
|
case 'win32':
|
|
351
355
|
return script + (await addExtensionWindows(extension_csv, version));
|
|
352
356
|
case 'darwin':
|
|
@@ -355,8 +359,8 @@ export async function addExtension(
|
|
|
355
359
|
return script + (await addExtensionLinux(extension_csv, version));
|
|
356
360
|
default:
|
|
357
361
|
return await utils.log(
|
|
358
|
-
'Platform ' +
|
|
359
|
-
|
|
362
|
+
'Platform ' + os + ' is not supported',
|
|
363
|
+
os,
|
|
360
364
|
'error'
|
|
361
365
|
);
|
|
362
366
|
}
|
package/src/fetch.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {IncomingMessage, OutgoingHttpHeaders} from 'http';
|
|
2
|
+
import * as https from 'https';
|
|
3
|
+
import * as url from 'url';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Function to fetch an URL
|
|
7
|
+
*
|
|
8
|
+
* @param input_url
|
|
9
|
+
* @param auth_token
|
|
10
|
+
*/
|
|
11
|
+
export async function fetch(
|
|
12
|
+
input_url: string,
|
|
13
|
+
auth_token?: string,
|
|
14
|
+
redirect_count = 5
|
|
15
|
+
): Promise<Record<string, string>> {
|
|
16
|
+
const fetch_promise: Promise<Record<string, string>> = new Promise(
|
|
17
|
+
resolve => {
|
|
18
|
+
const url_object: url.UrlObject = new url.URL(input_url);
|
|
19
|
+
const headers: OutgoingHttpHeaders = {
|
|
20
|
+
'User-Agent': `Mozilla/5.0 (${process.platform} ${process.arch}) setup-php`
|
|
21
|
+
};
|
|
22
|
+
if (auth_token) {
|
|
23
|
+
headers.authorization = 'Bearer ' + auth_token;
|
|
24
|
+
}
|
|
25
|
+
const options: https.RequestOptions = {
|
|
26
|
+
hostname: url_object.hostname,
|
|
27
|
+
path: url_object.pathname,
|
|
28
|
+
headers: headers
|
|
29
|
+
};
|
|
30
|
+
const req = https.get(options, (res: IncomingMessage) => {
|
|
31
|
+
if (res.statusCode === 200) {
|
|
32
|
+
let body = '';
|
|
33
|
+
res.setEncoding('utf8');
|
|
34
|
+
res.on('data', chunk => (body += chunk));
|
|
35
|
+
res.on('end', () => resolve({data: `${body}`}));
|
|
36
|
+
} else if (
|
|
37
|
+
[301, 302, 303, 307, 308].includes(res.statusCode as number)
|
|
38
|
+
) {
|
|
39
|
+
if (redirect_count > 0 && res.headers.location) {
|
|
40
|
+
fetch(res.headers.location, auth_token, redirect_count--).then(
|
|
41
|
+
resolve
|
|
42
|
+
);
|
|
43
|
+
} else {
|
|
44
|
+
resolve({error: `${res.statusCode}: Redirect error`});
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
resolve({error: `${res.statusCode}: ${res.statusMessage}`});
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
req.end();
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
return await fetch_promise;
|
|
54
|
+
}
|
package/src/install.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs';
|
|
1
3
|
import {exec} from '@actions/exec';
|
|
2
4
|
import * as core from '@actions/core';
|
|
3
5
|
import * as config from './config';
|
|
@@ -9,66 +11,51 @@ import * as utils from './utils';
|
|
|
9
11
|
/**
|
|
10
12
|
* Build the script
|
|
11
13
|
*
|
|
12
|
-
* @param
|
|
13
|
-
* @param version
|
|
14
|
-
* @param os_version
|
|
14
|
+
* @param os
|
|
15
15
|
*/
|
|
16
|
-
export async function getScript(
|
|
17
|
-
filename: string,
|
|
18
|
-
version: string,
|
|
19
|
-
os_version: string
|
|
20
|
-
): Promise<string> {
|
|
16
|
+
export async function getScript(os: string): Promise<string> {
|
|
21
17
|
const url = 'https://setup-php.com/sponsor';
|
|
22
|
-
|
|
18
|
+
const filename = os + (await utils.scriptExtension(os));
|
|
19
|
+
const script_path = path.join(__dirname, '../src/scripts', filename);
|
|
20
|
+
const run_path = script_path.replace(os, 'run');
|
|
23
21
|
process.env['fail_fast'] = await utils.getInput('fail-fast', false);
|
|
24
22
|
const extension_csv: string = await utils.getInput('extensions', false);
|
|
25
23
|
const ini_values_csv: string = await utils.getInput('ini-values', false);
|
|
26
24
|
const coverage_driver: string = await utils.getInput('coverage', false);
|
|
27
25
|
const tools_csv: string = await utils.getInput('tools', false);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
const version: string = await utils.parseVersion(
|
|
27
|
+
await utils.getInput('php-version', true)
|
|
28
|
+
);
|
|
29
|
+
const ini_file: string = await utils.parseIniFile(
|
|
30
|
+
await utils.getInput('ini-file', false)
|
|
31
|
+
);
|
|
32
|
+
let script = await utils.joins('.', script_path, version, ini_file);
|
|
31
33
|
if (extension_csv) {
|
|
32
|
-
script += await extensions.addExtension(extension_csv, version,
|
|
34
|
+
script += await extensions.addExtension(extension_csv, version, os);
|
|
33
35
|
}
|
|
36
|
+
script += await tools.addTools(tools_csv, version, os);
|
|
34
37
|
if (coverage_driver) {
|
|
35
|
-
script += await coverage.addCoverage(coverage_driver, version,
|
|
38
|
+
script += await coverage.addCoverage(coverage_driver, version, os);
|
|
36
39
|
}
|
|
37
40
|
if (ini_values_csv) {
|
|
38
|
-
script += await config.addINIValues(ini_values_csv,
|
|
41
|
+
script += await config.addINIValues(ini_values_csv, os);
|
|
39
42
|
}
|
|
40
|
-
script += '\n' + (await utils.stepLog(`Sponsor setup-php`,
|
|
41
|
-
script += '\n' + (await utils.addLog('$tick', 'setup-php', url,
|
|
43
|
+
script += '\n' + (await utils.stepLog(`Sponsor setup-php`, os));
|
|
44
|
+
script += '\n' + (await utils.addLog('$tick', 'setup-php', url, os));
|
|
45
|
+
|
|
46
|
+
fs.writeFileSync(run_path, script, {mode: 0o755});
|
|
42
47
|
|
|
43
|
-
return
|
|
48
|
+
return run_path;
|
|
44
49
|
}
|
|
45
50
|
|
|
46
51
|
/**
|
|
47
52
|
* Run the script
|
|
48
53
|
*/
|
|
49
54
|
export async function run(): Promise<void> {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
const version: string = await utils.parseVersion(
|
|
58
|
-
await utils.getInput('php-version', true)
|
|
59
|
-
);
|
|
60
|
-
if (version) {
|
|
61
|
-
const os_version: string = process.platform;
|
|
62
|
-
const tool = await utils.scriptTool(os_version);
|
|
63
|
-
const script = os_version + (await utils.scriptExtension(os_version));
|
|
64
|
-
const location = await getScript(script, version, os_version);
|
|
65
|
-
await exec(await utils.joins(tool, location, version, __dirname));
|
|
66
|
-
} else {
|
|
67
|
-
core.setFailed('Unable to get the PHP version');
|
|
68
|
-
}
|
|
69
|
-
} catch (error) {
|
|
70
|
-
core.setFailed((error as Error).message);
|
|
71
|
-
}
|
|
55
|
+
const os: string = process.platform;
|
|
56
|
+
const tool = await utils.scriptTool(os);
|
|
57
|
+
const run_path = await getScript(os);
|
|
58
|
+
await exec(tool + run_path);
|
|
72
59
|
}
|
|
73
60
|
|
|
74
61
|
// call the run function
|
package/src/scripts/darwin.sh
CHANGED
|
@@ -23,11 +23,14 @@ disable_dependency_extensions() {
|
|
|
23
23
|
disable_extension_helper() {
|
|
24
24
|
local extension=$1
|
|
25
25
|
local disable_dependents=${2:-false}
|
|
26
|
+
get_extension_map
|
|
26
27
|
if [ "$disable_dependents" = "true" ]; then
|
|
27
28
|
disable_extension_dependents "$extension"
|
|
28
29
|
fi
|
|
29
30
|
sudo sed -Ei '' "/=(.*\/)?\"?$extension(.so)?$/d" "${ini_file:?}"
|
|
30
31
|
sudo rm -rf "$scan_dir"/*"$extension"*
|
|
32
|
+
mkdir -p /tmp/extdisabled/"$version"
|
|
33
|
+
echo '' | sudo tee /tmp/extdisabled/"$version"/"$extension" >/dev/null 2>&1
|
|
31
34
|
}
|
|
32
35
|
|
|
33
36
|
# Function to fetch a brew tap.
|
|
@@ -61,7 +64,7 @@ add_brew_tap() {
|
|
|
61
64
|
add_brew_extension() {
|
|
62
65
|
formula=$1
|
|
63
66
|
prefix=$2
|
|
64
|
-
extension=$(grep "$formula=" "$
|
|
67
|
+
extension=$(grep "$formula=" "$src"/configs/brew_extensions | cut -d '=' -f 2)
|
|
65
68
|
[[ -z "$extension" ]] && extension="$(echo "$formula" | sed -E "s/pecl_|[0-9]//g")"
|
|
66
69
|
enable_extension "$extension" "$prefix"
|
|
67
70
|
if check_extension "$extension"; then
|
|
@@ -69,7 +72,7 @@ add_brew_extension() {
|
|
|
69
72
|
else
|
|
70
73
|
add_brew_tap "$php_tap"
|
|
71
74
|
add_brew_tap "$ext_tap"
|
|
72
|
-
sudo mv "$tap_dir"/"$ext_tap"/.github/deps/"$formula"/* "$
|
|
75
|
+
sudo mv "$tap_dir"/"$ext_tap"/.github/deps/"$formula"/* "$core_repo/Formula/" 2>/dev/null || true
|
|
73
76
|
update_dependencies >/dev/null 2>&1
|
|
74
77
|
disable_dependency_extensions "$extension" >/dev/null 2>&1
|
|
75
78
|
brew install -f "$formula@$version" >/dev/null 2>&1
|
|
@@ -78,22 +81,17 @@ add_brew_extension() {
|
|
|
78
81
|
fi
|
|
79
82
|
}
|
|
80
83
|
|
|
81
|
-
#
|
|
82
|
-
|
|
84
|
+
# Helper function to add an extension.
|
|
85
|
+
add_extension_helper() {
|
|
83
86
|
local extension=$1
|
|
84
87
|
prefix=$2
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
add_log "${tick:?}" "$extension" "Enabled"
|
|
88
|
+
if [[ "$version" =~ ${old_versions:?} ]] && [ "$extension" = "imagick" ]; then
|
|
89
|
+
run_script "php5-darwin" "${version/./}" "$extension" >/dev/null 2>&1
|
|
88
90
|
else
|
|
89
|
-
|
|
90
|
-
|
|
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"
|
|
91
|
+
pecl_install "$extension" >/dev/null 2>&1 &&
|
|
92
|
+
if [[ "$version" =~ ${old_versions:?} ]]; then echo "$prefix=$ext_dir/$extension.so" >>"$ini_file"; fi
|
|
96
93
|
fi
|
|
94
|
+
add_extension_log "$extension" "Installed and enabled"
|
|
97
95
|
}
|
|
98
96
|
|
|
99
97
|
# Function to handle request to add phpize and php-config.
|
|
@@ -104,6 +102,7 @@ add_devtools() {
|
|
|
104
102
|
|
|
105
103
|
# Function to handle request to add PECL.
|
|
106
104
|
add_pecl() {
|
|
105
|
+
enable_extension xml extension >/dev/null 2>&1
|
|
107
106
|
configure_pecl >/dev/null 2>&1
|
|
108
107
|
pear_version=$(get_tool_version "pecl" "version")
|
|
109
108
|
add_log "${tick:?}" "PECL" "Found PECL $pear_version"
|
|
@@ -132,19 +131,23 @@ patch_brew() {
|
|
|
132
131
|
# Helper function to update the dependencies.
|
|
133
132
|
update_dependencies_helper() {
|
|
134
133
|
dependency=$1
|
|
135
|
-
get -q -n "$
|
|
134
|
+
get -q -n "$core_repo/Formula/$dependency.rb" "https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/$dependency.rb"
|
|
136
135
|
link_libraries "$dependency"
|
|
137
136
|
}
|
|
138
137
|
|
|
139
138
|
# Function to update dependencies.
|
|
140
139
|
update_dependencies() {
|
|
141
|
-
if ! [ -e /tmp/update_dependencies ]
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
140
|
+
if ! [ -e /tmp/update_dependencies ]; then
|
|
141
|
+
if [ "${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/$php_tap/.github/deps/${ImageOS:?}_${ImageVersion:?}"
|
|
147
|
+
wait "${to_wait[@]}"
|
|
148
|
+
else
|
|
149
|
+
git -C "$core_repo" fetch origin master && git -C "$core_repo" reset --hard origin/master
|
|
150
|
+
fi
|
|
148
151
|
echo '' | sudo tee /tmp/update_dependencies >/dev/null 2>&1
|
|
149
152
|
fi
|
|
150
153
|
}
|
|
@@ -164,7 +167,7 @@ fix_dependencies() {
|
|
|
164
167
|
get_brewed_php() {
|
|
165
168
|
php_cellar="$brew_prefix"/Cellar/php
|
|
166
169
|
if [ -d "$php_cellar" ] && ! [[ "$(find "$php_cellar" -maxdepth 1 -name "$version*" | wc -l 2>/dev/null)" -eq 0 ]]; then
|
|
167
|
-
|
|
170
|
+
php_semver | cut -c 1-3
|
|
168
171
|
else
|
|
169
172
|
echo 'false';
|
|
170
173
|
fi
|
|
@@ -192,9 +195,31 @@ php_extra_version() {
|
|
|
192
195
|
fi
|
|
193
196
|
}
|
|
194
197
|
|
|
198
|
+
# Function to set php.ini
|
|
199
|
+
add_php_config() {
|
|
200
|
+
if ! [ -e "$ini_dir"/php.ini-development ]; then
|
|
201
|
+
sudo cp "$ini_dir"/php.ini "$ini_dir"/php.ini-development
|
|
202
|
+
fi
|
|
203
|
+
if [[ "$ini" = "production" || "$ini" = "development" ]]; then
|
|
204
|
+
sudo cp "$ini_dir"/php.ini-"$ini" "$ini_dir"/php.ini
|
|
205
|
+
elif [ "$ini" = "none" ]; then
|
|
206
|
+
echo '' | sudo tee "${ini_file[@]}" >/dev/null 2>&1
|
|
207
|
+
fi
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
# Function to get scan directory.
|
|
211
|
+
get_scan_dir() {
|
|
212
|
+
if [[ "$version" =~ ${old_versions:?} ]]; then
|
|
213
|
+
php --ini | grep additional | sed -e "s|.*: s*||"
|
|
214
|
+
else
|
|
215
|
+
echo "$ini_dir"/conf.d
|
|
216
|
+
fi
|
|
217
|
+
}
|
|
218
|
+
|
|
195
219
|
# Function to Setup PHP.
|
|
196
220
|
setup_php() {
|
|
197
221
|
step_log "Setup PHP"
|
|
222
|
+
php_config="$(command -v php-config 2>/dev/null)"
|
|
198
223
|
existing_version=$(get_brewed_php)
|
|
199
224
|
if [[ "$version" =~ ${old_versions:?} ]]; then
|
|
200
225
|
run_script "php5-darwin" "${version/./}" >/dev/null 2>&1
|
|
@@ -209,44 +234,52 @@ setup_php() {
|
|
|
209
234
|
status="Found"
|
|
210
235
|
fix_dependencies >/dev/null 2>&1
|
|
211
236
|
fi
|
|
212
|
-
|
|
237
|
+
php_config="$(command -v php-config)"
|
|
238
|
+
ext_dir="$(grep 'extension_dir=' "$php_config" | cut -d "'" -f 2)"
|
|
239
|
+
ini_dir="$(php_ini_path)"
|
|
240
|
+
scan_dir="$(get_scan_dir)"
|
|
241
|
+
ini_file="$ini_dir"/php.ini
|
|
242
|
+
sudo mkdir -m 777 -p "$ext_dir" "$HOME/.composer"
|
|
213
243
|
sudo chmod 777 "$ini_file" "${tool_path_dir:?}"
|
|
244
|
+
semver="$(php_semver)"
|
|
245
|
+
extra_version="$(php_extra_version)"
|
|
214
246
|
configure_php
|
|
215
|
-
|
|
216
|
-
scan_dir=$(php --ini | grep additional | sed -e "s|.*: s*||")
|
|
217
|
-
sudo mkdir -m 777 -p "$ext_dir" "$HOME/.composer"
|
|
218
|
-
semver=$(php_semver)
|
|
219
|
-
extra_version=$(php_extra_version)
|
|
247
|
+
set_output "php-version" "$semver"
|
|
220
248
|
if [ "${semver%.*}" != "$version" ]; then
|
|
221
249
|
add_log "${cross:?}" "PHP" "Could not setup PHP $version"
|
|
222
250
|
exit 1
|
|
223
251
|
fi
|
|
224
252
|
|
|
225
|
-
sudo cp "$
|
|
226
|
-
echo "::set-output name=php-version::$semver"
|
|
253
|
+
sudo cp "$src"/configs/pm/*.json "$RUNNER_TOOL_CACHE/"
|
|
227
254
|
add_log "$tick" "PHP" "$status PHP $semver$extra_version"
|
|
228
255
|
}
|
|
229
256
|
|
|
230
257
|
# Variables
|
|
231
|
-
version=$1
|
|
232
|
-
|
|
258
|
+
version=${1:-'8.1'}
|
|
259
|
+
ini=${2:-'production'}
|
|
260
|
+
src=${0%/*}/..
|
|
233
261
|
php_formula=shivammathur/php/php@"$version"
|
|
234
|
-
|
|
235
|
-
|
|
262
|
+
brew_path="$(command -v brew)"
|
|
263
|
+
brew_path_dir="$(dirname "$brew_path")"
|
|
264
|
+
brew_prefix="$brew_path_dir"/..
|
|
265
|
+
brew_repo="$brew_path_dir/$(dirname "$(readlink "$brew_path")")"/..
|
|
236
266
|
tap_dir="$brew_repo"/Library/Taps
|
|
237
|
-
|
|
267
|
+
core_repo="$tap_dir"/homebrew/homebrew-core
|
|
268
|
+
scripts="$src"/scripts
|
|
238
269
|
ext_tap=shivammathur/homebrew-extensions
|
|
239
270
|
php_tap=shivammathur/homebrew-php
|
|
240
271
|
export HOMEBREW_CHANGE_ARCH_TO_ARM=1
|
|
241
272
|
export HOMEBREW_DEVELOPER=1
|
|
242
|
-
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
|
243
273
|
export HOMEBREW_NO_AUTO_UPDATE=1
|
|
274
|
+
export HOMEBREW_NO_ENV_HINTS=1
|
|
275
|
+
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
|
244
276
|
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
|
245
277
|
|
|
246
278
|
# shellcheck source=.
|
|
247
|
-
. "${scripts:?}"/
|
|
279
|
+
. "${scripts:?}"/unix.sh
|
|
248
280
|
. "${scripts:?}"/tools/add_tools.sh
|
|
249
|
-
. "${scripts:?}"/
|
|
281
|
+
. "${scripts:?}"/extensions/source.sh
|
|
282
|
+
. "${scripts:?}"/extensions/add_extensions.sh
|
|
250
283
|
read_env
|
|
251
284
|
self_hosted_setup
|
|
252
285
|
setup_php
|