mirror of
https://github.com/shivammathur/setup-php.git
synced 2025-07-31 10:47:27 +07:00
Add support for Xdebug3 on stable PHP
This commit is contained in:
@ -9,10 +9,10 @@ export async function addINIValuesUnix(
|
||||
ini_values_csv: string
|
||||
): Promise<string> {
|
||||
const ini_values: Array<string> = await utils.CSVArray(ini_values_csv);
|
||||
let script = '\n';
|
||||
let script = '';
|
||||
await utils.asyncForEach(ini_values, async function (line: string) {
|
||||
script +=
|
||||
(await utils.addLog('$tick', line, 'Added to php.ini', 'linux')) + '\n';
|
||||
'\n' + (await utils.addLog('$tick', line, 'Added to php.ini', 'linux'));
|
||||
});
|
||||
return 'echo "' + ini_values.join('\n') + '" >> $ini_file' + script;
|
||||
}
|
||||
|
@ -5,29 +5,36 @@ import * as config from './config';
|
||||
/**
|
||||
* Function to setup Xdebug
|
||||
*
|
||||
* @param extension
|
||||
* @param version
|
||||
* @param os_version
|
||||
* @param pipe
|
||||
*/
|
||||
export async function addCoverageXdebug(
|
||||
extension: string,
|
||||
version: string,
|
||||
os_version: string,
|
||||
pipe: string
|
||||
): Promise<string> {
|
||||
switch (version) {
|
||||
case '7.4':
|
||||
const xdebug =
|
||||
(await extensions.addExtension(extension, version, os_version, true)) +
|
||||
pipe;
|
||||
const ini =
|
||||
(await config.addINIValues('xdebug.mode=coverage', os_version, true)) +
|
||||
pipe;
|
||||
const log = await utils.addLog(
|
||||
'$tick',
|
||||
extension,
|
||||
'Xdebug enabled as coverage driver',
|
||||
os_version
|
||||
);
|
||||
switch (true) {
|
||||
case /^xdebug3$/.test(extension):
|
||||
case /^8\.0$/.test(version):
|
||||
return '\n' + xdebug + '\n' + ini + '\n' + log;
|
||||
case /^xdebug$/.test(extension):
|
||||
default:
|
||||
return (
|
||||
(await extensions.addExtension('xdebug', version, os_version, true)) +
|
||||
pipe +
|
||||
'\n' +
|
||||
(await utils.addLog(
|
||||
'$tick',
|
||||
'xdebug',
|
||||
'Xdebug enabled as coverage driver',
|
||||
os_version
|
||||
))
|
||||
);
|
||||
return '\n' + xdebug + '\n' + log;
|
||||
}
|
||||
}
|
||||
|
||||
@ -141,7 +148,11 @@ export async function addCoverage(
|
||||
case 'pcov':
|
||||
return script + (await addCoveragePCOV(version, os_version, pipe));
|
||||
case 'xdebug':
|
||||
return script + (await addCoverageXdebug(version, os_version, pipe));
|
||||
case 'xdebug3':
|
||||
return (
|
||||
script +
|
||||
(await addCoverageXdebug(coverage_driver, version, os_version, pipe))
|
||||
);
|
||||
case 'none':
|
||||
return script + (await disableCoverage(version, os_version, pipe));
|
||||
default:
|
||||
|
@ -298,10 +298,20 @@ export async function addExtensionLinux(
|
||||
' ' +
|
||||
version;
|
||||
return;
|
||||
// match 7.2xdebug3..7.4xdebug3
|
||||
case /^7\.[2-4]xdebug3$/.test(version_extension):
|
||||
add_script +=
|
||||
'\nadd_extension_from_source xdebug xdebug/xdebug master --enable-xdebug zend_extension';
|
||||
return;
|
||||
// match 8.0xdebug3
|
||||
case /^8\.[0-9]xdebug3$/.test(version_extension):
|
||||
extension = 'xdebug';
|
||||
command = command_prefix + version + '-' + extension + pipe;
|
||||
break;
|
||||
// match 7.1xdebug..7.4xdebug
|
||||
case /^7\.[1-4]xdebug$/.test(version_extension):
|
||||
add_script +=
|
||||
'\nupdate_extension xdebug 2.9.3' +
|
||||
'\nupdate_extension xdebug 2.9.6' +
|
||||
pipe +
|
||||
'\n' +
|
||||
(await utils.addLog('$tick', 'xdebug', 'Enabled', 'linux'));
|
||||
|
@ -201,6 +201,27 @@ update_extension() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to install extension from source
|
||||
add_extension_from_source() {
|
||||
extension=$1
|
||||
repo=$2
|
||||
release=$3
|
||||
args=$4
|
||||
prefix=$5
|
||||
(
|
||||
add_devtools
|
||||
delete_extension "$extension"
|
||||
curl -o /tmp/"$extension".tar.gz -sSL https://github.com/"$repo"/archive/"$release".tar.gz
|
||||
tar xf /tmp/"$extension".tar.gz -C /tmp
|
||||
cd /tmp/"$extension-$release" || exit 1
|
||||
phpize && ./configure "$args" && make && sudo make install
|
||||
enable_extension "$extension" "$prefix"
|
||||
) >/dev/null 2>&1
|
||||
(
|
||||
check_extension "$extension" && add_log "$tick" "$extension" "Installed and enabled"
|
||||
) || add_log "$cross" "$extension" "Could not install $extension-$release on PHP $semver"
|
||||
}
|
||||
|
||||
# Function to setup a remote tool.
|
||||
add_tool() {
|
||||
url=$1
|
||||
|
12
src/utils.ts
12
src/utils.ts
@ -224,13 +224,17 @@ export async function CSVArray(values_csv: string): Promise<Array<string>> {
|
||||
* @param extension
|
||||
*/
|
||||
export async function getExtensionPrefix(extension: string): Promise<string> {
|
||||
const zend: Array<string> = ['xdebug', 'opcache', 'ioncube', 'eaccelerator'];
|
||||
const zend: Array<string> = [
|
||||
'xdebug',
|
||||
'xdebug3',
|
||||
'opcache',
|
||||
'ioncube',
|
||||
'eaccelerator'
|
||||
];
|
||||
switch (zend.indexOf(extension)) {
|
||||
case 0:
|
||||
case 1:
|
||||
default:
|
||||
return 'zend_extension';
|
||||
case -1:
|
||||
default:
|
||||
return 'extension';
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user