mirror of
https://github.com/shivammathur/setup-php.git
synced 2025-08-14 01:24:44 +07:00
Compare commits
43 Commits
Author | SHA1 | Date | |
---|---|---|---|
cb8f453143 | |||
19323ea920 | |||
b951cf1d99 | |||
1fdc5e773b | |||
1474d67903 | |||
1afae1868c | |||
36e33e130a | |||
3d794ddd93 | |||
c61bd0e074 | |||
1f8252a3ed | |||
3e2462a699 | |||
e513384a65 | |||
6483a6ea70 | |||
ca308a6886 | |||
035ef490b9 | |||
6bf279d08a | |||
bb16550379 | |||
7d999d501a | |||
7f8b1e5773 | |||
6461006ceb | |||
5f422817a1 | |||
1b08836381 | |||
ae98bca05f | |||
fb1ad7fc84 | |||
0d60024683 | |||
1224b29111 | |||
2f306f9d25 | |||
39b4e4a983 | |||
7e46297c8d | |||
f9390a5478 | |||
f42145a164 | |||
755bbb1cc0 | |||
a36edd3ca4 | |||
f2018b2189 | |||
9c411b6e2b | |||
e8d8aa3403 | |||
686e8dfff9 | |||
b46c8e2a8c | |||
2d47531473 | |||
fd03521cb4 | |||
f03add0b41 | |||
baf9535ba5 | |||
cc0e576689 |
4
.github/workflows/docs.yml
vendored
4
.github/workflows/docs.yml
vendored
@ -15,7 +15,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-22.04, ubuntu-20.04, ubuntu-18.04, windows-2022, macos-11]
|
operating-system: [ubuntu-22.04, ubuntu-20.04, windows-2022, macos-11]
|
||||||
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2']
|
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2']
|
||||||
steps:
|
steps:
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
@ -70,7 +70,7 @@ jobs:
|
|||||||
git config --local user.name "${{ github.repository_owner }}"
|
git config --local user.name "${{ github.repository_owner }}"
|
||||||
- name: Combine
|
- name: Combine
|
||||||
run: |
|
run: |
|
||||||
for os in ubuntu-22.04 ubuntu-20.04 ubuntu-18.04 windows-2022 windows-2019 macos-11 macos-10.15; do
|
for os in ubuntu-22.04 ubuntu-20.04 windows-2022 windows-2019 macos-11 macos-10.15; do
|
||||||
echo "These are extensions which are loaded by default on the following PHP versions. More extensions which are available as packages and available on pecl are supported by setup-php. Refer to [php extension support](https://github.com/shivammathur/setup-php#heavy_plus_sign-php-extension-support) for more details." > Php-extensions-loaded-on-"$os".md
|
echo "These are extensions which are loaded by default on the following PHP versions. More extensions which are available as packages and available on pecl are supported by setup-php. Refer to [php extension support](https://github.com/shivammathur/setup-php#heavy_plus_sign-php-extension-support) for more details." > Php-extensions-loaded-on-"$os".md
|
||||||
for version in 5.3 5.4 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2; do
|
for version in 5.3 5.4 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2; do
|
||||||
if [ "$os" = "macos-10.15" ]; then
|
if [ "$os" = "macos-10.15" ]; then
|
||||||
|
22
.github/workflows/php.yml
vendored
22
.github/workflows/php.yml
vendored
@ -19,7 +19,8 @@ on:
|
|||||||
- 'examples/**'
|
- 'examples/**'
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
env:
|
||||||
|
default-php-version: '8.2'
|
||||||
jobs:
|
jobs:
|
||||||
run:
|
run:
|
||||||
name: Run
|
name: Run
|
||||||
@ -27,8 +28,15 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
operating-system: [ubuntu-22.04, ubuntu-20.04, ubuntu-18.04, windows-2019, macos-latest]
|
operating-system: [ubuntu-22.04, ubuntu-20.04, windows-2019, macos-latest]
|
||||||
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3']
|
php-versions: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3']
|
||||||
|
include:
|
||||||
|
- operating-system: ubuntu-22.04
|
||||||
|
php-versions: ''
|
||||||
|
php-version-file: 'php-version-file'
|
||||||
|
exclude:
|
||||||
|
- operating-system: macos-latest
|
||||||
|
php-versions: '8.3'
|
||||||
env:
|
env:
|
||||||
extensions: xml, opcache, xdebug, pcov, gd
|
extensions: xml, opcache, xdebug, pcov, gd
|
||||||
key: cache-v5
|
key: cache-v5
|
||||||
@ -40,7 +48,7 @@ jobs:
|
|||||||
id: cache-env
|
id: cache-env
|
||||||
uses: shivammathur/cache-extensions@develop
|
uses: shivammathur/cache-extensions@develop
|
||||||
with:
|
with:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions || env.default-php-version }}
|
||||||
extensions: ${{ env.extensions }}
|
extensions: ${{ env.extensions }}
|
||||||
key: ${{ env.key }}
|
key: ${{ env.key }}
|
||||||
|
|
||||||
@ -51,17 +59,23 @@ jobs:
|
|||||||
key: ${{ steps.cache-env.outputs.key }}
|
key: ${{ steps.cache-env.outputs.key }}
|
||||||
restore-keys: ${{ steps.cache-env.outputs.key }}
|
restore-keys: ${{ steps.cache-env.outputs.key }}
|
||||||
|
|
||||||
|
- name: Stage php-version-file
|
||||||
|
if: ${{ matrix.php-version-file == 'php-version-file' }}
|
||||||
|
run: |
|
||||||
|
echo ${{ env.default-php-version }} > php-version-file
|
||||||
|
|
||||||
- name: Setup PHP with extensions and custom config
|
- name: Setup PHP with extensions and custom config
|
||||||
run: node dist/index.js
|
run: node dist/index.js
|
||||||
env:
|
env:
|
||||||
php-version: ${{ matrix.php-versions }}
|
php-version: ${{ matrix.php-versions }}
|
||||||
|
php-version-file: ${{ matrix.php-version-file }}
|
||||||
extensions: ${{ env.extensions }}
|
extensions: ${{ env.extensions }}
|
||||||
ini-values: post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata
|
ini-values: post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata
|
||||||
|
|
||||||
- name: Testing PHP version
|
- name: Testing PHP version
|
||||||
run: |
|
run: |
|
||||||
php -v
|
php -v
|
||||||
php -r "if(strpos(phpversion(), '${{ matrix.php-versions }}') === false) {throw new Exception('Wrong PHP version Installed');}"
|
php -r "if(strpos(phpversion(), '${{ matrix.php-versions || env.default-php-version }}') === false) {throw new Exception('Wrong PHP version Installed');}"
|
||||||
|
|
||||||
- name: Testing Composer version
|
- name: Testing Composer version
|
||||||
run: |
|
run: |
|
||||||
|
30
README.md
30
README.md
@ -75,7 +75,6 @@ Both `GitHub-hosted` and `self-hosted` runners are supported by `setup-php` on t
|
|||||||
|---------------------|------------------------------------|------------------------|
|
|---------------------|------------------------------------|------------------------|
|
||||||
| Ubuntu 22.04 | `ubuntu-latest` or `ubuntu-22.04` | `PHP 8.1` |
|
| Ubuntu 22.04 | `ubuntu-latest` or `ubuntu-22.04` | `PHP 8.1` |
|
||||||
| Ubuntu 20.04 | `ubuntu-20.04` | `PHP 7.4` to `PHP 8.2` |
|
| Ubuntu 20.04 | `ubuntu-20.04` | `PHP 7.4` to `PHP 8.2` |
|
||||||
| Ubuntu 18.04 | `ubuntu-18.04` | `PHP 7.2` to `PHP 8.2` |
|
|
||||||
| Windows Server 2022 | `windows-latest` or `windows-2022` | `PHP 8.2` |
|
| Windows Server 2022 | `windows-latest` or `windows-2022` | `PHP 8.2` |
|
||||||
| Windows Server 2019 | `windows-2019` | `PHP 8.2` |
|
| Windows Server 2019 | `windows-2019` | `PHP 8.2` |
|
||||||
| macOS Monterey 12.x | `macos-12` | `PHP 8.2` |
|
| macOS Monterey 12.x | `macos-12` | `PHP 8.2` |
|
||||||
@ -87,7 +86,6 @@ Both `GitHub-hosted` and `self-hosted` runners are supported by `setup-php` on t
|
|||||||
|----------------------------------|----------------------------|
|
|----------------------------------|----------------------------|
|
||||||
| Ubuntu 22.04 | `self-hosted` or `Linux` |
|
| Ubuntu 22.04 | `self-hosted` or `Linux` |
|
||||||
| Ubuntu 20.04 | `self-hosted` or `Linux` |
|
| Ubuntu 20.04 | `self-hosted` or `Linux` |
|
||||||
| Ubuntu 18.04 | `self-hosted` or `Linux` |
|
|
||||||
| Debian 11 | `self-hosted` or `Linux` |
|
| Debian 11 | `self-hosted` or `Linux` |
|
||||||
| Debian 10 | `self-hosted` or `Linux` |
|
| Debian 10 | `self-hosted` or `Linux` |
|
||||||
| Windows 7 and newer | `self-hosted` or `Windows` |
|
| Windows 7 and newer | `self-hosted` or `Windows` |
|
||||||
@ -255,7 +253,7 @@ These tools can be set up globally using the `tools` input. It accepts a string
|
|||||||
|
|
||||||
When you specify just the major version or the version in `major.minor` format, the latest patch version matching the input will be setup.
|
When you specify just the major version or the version in `major.minor` format, the latest patch version matching the input will be setup.
|
||||||
|
|
||||||
Except for major versions of `composer`, For other tools when you specify only the `major` version or the version in `major.minor` format for any tool you can get rate limited by GitHub's API. To avoid this, it is recommended to provide a [`GitHub` OAuth token](https://github.com/shivammathur/setup-php#composer-github-oauth "Composer GitHub OAuth").
|
With the exception of major versions of `composer`, if you specify only the `major` version or the version in `major.minor` format for a tool you can get rate limited by GitHub's API. To avoid this, it is recommended to provide a [`GitHub` OAuth token](https://github.com/shivammathur/setup-php#composer-github-oauth "Composer GitHub OAuth").
|
||||||
You can do that by setting `GITHUB_TOKEN` environment variable. The `COMPOSER_TOKEN` environment variable has been deprecated in favor of `GITHUB_TOKEN` and will be removed in the next major version.
|
You can do that by setting `GITHUB_TOKEN` environment variable. The `COMPOSER_TOKEN` environment variable has been deprecated in favor of `GITHUB_TOKEN` and will be removed in the next major version.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@ -294,7 +292,7 @@ These tools can be set up globally using the `tools` input. It accepts a string
|
|||||||
|
|
||||||
- Tools `prestissimo` and `composer-prefetcher` will be skipped unless `composer:v1` is also specified in tools input. It is recommended to drop `prestissimo` and use `composer v2`.
|
- Tools `prestissimo` and `composer-prefetcher` will be skipped unless `composer:v1` is also specified in tools input. It is recommended to drop `prestissimo` and use `composer v2`.
|
||||||
|
|
||||||
- By default, expect `composer` tools which cannot be set up gracefully leave an error message in the logs, the execution is not interrupted. To change this behaviour you can set `fail-fast` flag to `true`.
|
- By default, except `composer` tools which cannot be set up gracefully leave an error message in the logs, the execution is not interrupted. To change this behaviour you can set `fail-fast` flag to `true`.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- name: Setup PHP with fail-fast
|
- name: Setup PHP with fail-fast
|
||||||
@ -391,14 +389,23 @@ Disable coverage for these reasons:
|
|||||||
|
|
||||||
> Specify using `with` keyword
|
> Specify using `with` keyword
|
||||||
|
|
||||||
#### `php-version` (required)
|
#### `php-version` (optional)
|
||||||
|
|
||||||
- Specify the PHP version you want to set up.
|
- Specify the PHP version you want to set up.
|
||||||
- Accepts a `string`. For example `'8.0'`.
|
- Accepts a `string`. For example `'8.0'`.
|
||||||
- Accepts `latest` to set up the latest stable PHP version.
|
- Accepts `latest` to set up the latest stable PHP version.
|
||||||
- Accepts `nightly` to set up a nightly build from the master branch of PHP.
|
- Accepts `nightly` to set up a nightly build from the master branch of PHP.
|
||||||
- Accepts the format `d.x`, where `d` is the major version. For example `5.x`, `7.x` and `8.x`.
|
- Accepts the format `d.x`, where `d` is the major version. For example `5.x`, `7.x` and `8.x`.
|
||||||
- See [PHP support](#tada-php-support) for supported PHP versions.
|
- See [PHP support](#tada-php-support) for the supported PHP versions.
|
||||||
|
- If not specified, it looks for `php-version-file` input.
|
||||||
|
|
||||||
|
#### `php-version-file` (optional)
|
||||||
|
|
||||||
|
- Specify a file with the PHP version you want to set up.
|
||||||
|
- Accepts a `string`. For example `'.phpenv-version'`.
|
||||||
|
- See [PHP support](#tada-php-support) for the supported PHP versions.
|
||||||
|
- By default, `.php-version` file is used.
|
||||||
|
- If not specified and the default `.php-version` file is not found, the latest stable PHP version is set up.
|
||||||
|
|
||||||
#### `extensions` (optional)
|
#### `extensions` (optional)
|
||||||
|
|
||||||
@ -505,12 +512,12 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
operating-system: ['ubuntu-latest', 'windows-latest', 'macos-latest']
|
operating-system: ['ubuntu-latest', 'windows-latest', 'macos-latest']
|
||||||
php-versions: ['8.0', '8.1', '8.2']
|
php-versions: ['8.1', '8.2', '8.3']
|
||||||
phpunit-versions: ['latest']
|
phpunit-versions: ['latest']
|
||||||
include:
|
include:
|
||||||
- operating-system: 'ubuntu-latest'
|
- operating-system: 'ubuntu-latest'
|
||||||
php-versions: '7.2'
|
php-versions: '8.0'
|
||||||
phpunit-versions: '8.5.21'
|
phpunit-versions: 9
|
||||||
steps:
|
steps:
|
||||||
- name: Setup PHP
|
- name: Setup PHP
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
@ -520,6 +527,8 @@ jobs:
|
|||||||
ini-values: post_max_size=256M, max_execution_time=180
|
ini-values: post_max_size=256M, max_execution_time=180
|
||||||
coverage: xdebug
|
coverage: xdebug
|
||||||
tools: php-cs-fixer, phpunit:${{ matrix.phpunit-versions }}
|
tools: php-cs-fixer, phpunit:${{ matrix.phpunit-versions }}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Nightly Build Setup
|
### Nightly Build Setup
|
||||||
@ -696,9 +705,6 @@ act -P ubuntu-22.04=shivammathur/node:2204
|
|||||||
|
|
||||||
# For runs-on: ubuntu-20.04
|
# For runs-on: ubuntu-20.04
|
||||||
act -P ubuntu-20.04=shivammathur/node:2004
|
act -P ubuntu-20.04=shivammathur/node:2004
|
||||||
|
|
||||||
# For runs-on: ubuntu-18.04
|
|
||||||
act -P ubuntu-18.04=shivammathur/node:1804
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### JIT Configuration
|
### JIT Configuration
|
||||||
|
@ -10,7 +10,7 @@ jest.mock('../src/install', () => ({
|
|||||||
.mockImplementation(async (os: string): Promise<string> => {
|
.mockImplementation(async (os: string): Promise<string> => {
|
||||||
const filename = os + (await utils.scriptExtension(os));
|
const filename = os + (await utils.scriptExtension(os));
|
||||||
const version: string = await utils.parseVersion(
|
const version: string = await utils.parseVersion(
|
||||||
await utils.getInput('php-version', true)
|
await utils.readPHPVersion()
|
||||||
);
|
);
|
||||||
const ini_file: string = await utils.parseIniFile(
|
const ini_file: string = await utils.parseIniFile(
|
||||||
await utils.getInput('ini-file', false)
|
await utils.getInput('ini-file', false)
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as utils from '../src/utils';
|
import * as utils from '../src/utils';
|
||||||
|
|
||||||
@ -7,7 +8,8 @@ import * as utils from '../src/utils';
|
|||||||
jest.mock('@actions/core', () => ({
|
jest.mock('@actions/core', () => ({
|
||||||
getInput: jest.fn().mockImplementation(key => {
|
getInput: jest.fn().mockImplementation(key => {
|
||||||
return ['setup-php'].indexOf(key) !== -1 ? key : '';
|
return ['setup-php'].indexOf(key) !== -1 ? key : '';
|
||||||
})
|
}),
|
||||||
|
info: jest.fn()
|
||||||
}));
|
}));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -261,6 +263,29 @@ describe('Utils tests', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('checking readPHPVersion', async () => {
|
||||||
|
expect(await utils.readPHPVersion()).toBe('latest');
|
||||||
|
|
||||||
|
process.env['php-version-file'] = '.phpenv-version';
|
||||||
|
await expect(utils.readPHPVersion()).rejects.toThrow(
|
||||||
|
"Could not find '.phpenv-version' file."
|
||||||
|
);
|
||||||
|
|
||||||
|
const existsSync = jest.spyOn(fs, 'existsSync').mockImplementation();
|
||||||
|
const readFileSync = jest.spyOn(fs, 'readFileSync').mockImplementation();
|
||||||
|
|
||||||
|
existsSync.mockReturnValue(true);
|
||||||
|
readFileSync.mockReturnValue('8.1');
|
||||||
|
|
||||||
|
expect(await utils.readPHPVersion()).toBe('8.1');
|
||||||
|
|
||||||
|
process.env['php-version'] = '8.2';
|
||||||
|
expect(await utils.readPHPVersion()).toBe('8.2');
|
||||||
|
|
||||||
|
existsSync.mockClear();
|
||||||
|
readFileSync.mockClear();
|
||||||
|
});
|
||||||
|
|
||||||
it('checking setVariable', async () => {
|
it('checking setVariable', async () => {
|
||||||
let script: string = await utils.setVariable('var', 'command', 'linux');
|
let script: string = await utils.setVariable('var', 'command', 'linux');
|
||||||
expect(script).toEqual('\nvar="$(command)"\n');
|
expect(script).toEqual('\nvar="$(command)"\n');
|
||||||
|
@ -7,15 +7,17 @@ branding:
|
|||||||
inputs:
|
inputs:
|
||||||
php-version:
|
php-version:
|
||||||
description: 'Setup PHP version.'
|
description: 'Setup PHP version.'
|
||||||
default: '8.2'
|
required: false
|
||||||
required: true
|
php-version-file:
|
||||||
|
description: 'Setup PHP version from a file.'
|
||||||
|
required: false
|
||||||
extensions:
|
extensions:
|
||||||
description: 'Setup PHP extensions.'
|
description: 'Setup PHP extensions.'
|
||||||
required: false
|
required: false
|
||||||
ini-file:
|
ini-file:
|
||||||
description: 'Set base ini file.'
|
description: 'Set base ini file.'
|
||||||
default: 'production'
|
|
||||||
required: false
|
required: false
|
||||||
|
default: 'production'
|
||||||
ini-values:
|
ini-values:
|
||||||
description: 'Add values to php.ini.'
|
description: 'Add values to php.ini.'
|
||||||
required: false
|
required: false
|
||||||
|
100
dist/index.js
vendored
100
dist/index.js
vendored
@ -248,7 +248,7 @@ async function addExtensionDarwin(extension_csv, version) {
|
|||||||
case /.+-.+\/.+@.+/.test(extension):
|
case /.+-.+\/.+@.+/.test(extension):
|
||||||
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
||||||
return;
|
return;
|
||||||
case /^(7\.4|8\.[0-2])relay(-v?\d+\.\d+\.\d+)?$/.test(version_extension):
|
case /^(7\.4|8\.[0-3])relay(-v?\d+\.\d+\.\d+)?$/.test(version_extension):
|
||||||
case /^(5\.[3-6]|7\.[0-4]|8\.[0-2])blackfire(-\d+\.\d+\.\d+)?$/.test(version_extension):
|
case /^(5\.[3-6]|7\.[0-4]|8\.[0-2])blackfire(-\d+\.\d+\.\d+)?$/.test(version_extension):
|
||||||
case /^couchbase|^event|^gearman$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(extension):
|
case /^couchbase|^event|^gearman$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(extension):
|
||||||
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
case /^(5\.[3-6]|7\.[0-4])ioncube$/.test(version_extension):
|
||||||
@ -266,7 +266,7 @@ async function addExtensionDarwin(extension_csv, version) {
|
|||||||
case /(5\.[3-6]|7\.0)pcov/.test(version_extension):
|
case /(5\.[3-6]|7\.0)pcov/.test(version_extension):
|
||||||
add_script += await utils.getUnsupportedLog('pcov', version, 'darwin');
|
add_script += await utils.getUnsupportedLog('pcov', version, 'darwin');
|
||||||
return;
|
return;
|
||||||
case /(?<!5\.[3-5])(amqp|apcu|expect|gnupg|grpc|igbinary|imagick|imap|mailparse|mcrypt|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|ssh2|swoole|xdebug|xdebug2|yaml|zmq)/.test(version_extension):
|
case /(?<!5\.[3-5])(amqp|apcu|expect|gnupg|grpc|igbinary|imagick|imap|mailparse|mcrypt|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|snmp|ssh2|swoole|uuid|xdebug|xdebug2|yaml|zmq)/.test(version_extension):
|
||||||
case /(?<!5\.[3-6])(ds|v8js)/.test(version_extension):
|
case /(?<!5\.[3-6])(ds|v8js)/.test(version_extension):
|
||||||
case /(5\.6|7\.[0-4])(propro|lua)/.test(version_extension):
|
case /(5\.6|7\.[0-4])(propro|lua)/.test(version_extension):
|
||||||
case /(?<!5\.[3-6]|7\.0)pcov/.test(version_extension):
|
case /(?<!5\.[3-6]|7\.0)pcov/.test(version_extension):
|
||||||
@ -365,7 +365,7 @@ async function addExtensionLinux(extension_csv, version) {
|
|||||||
case /.+-.+\/.+@.+/.test(extension):
|
case /.+-.+\/.+@.+/.test(extension):
|
||||||
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
||||||
return;
|
return;
|
||||||
case /^(7\.4|8\.[0-2])relay(-v?\d+\.\d+\.\d+)?$/.test(version_extension):
|
case /^(7\.4|8\.[0-3])relay(-v?\d+\.\d+\.\d+)?$/.test(version_extension):
|
||||||
case /^(5\.[3-6]|7\.[0-4]|8\.[0-2])blackfire(-\d+\.\d+\.\d+)?$/.test(version_extension):
|
case /^(5\.[3-6]|7\.[0-4]|8\.[0-2])blackfire(-\d+\.\d+\.\d+)?$/.test(version_extension):
|
||||||
case /^((5\.[3-6])|(7\.[0-2]))pdo_cubrid$|^((5\.[3-6])|(7\.[0-4]))cubrid$/.test(version_extension):
|
case /^((5\.[3-6])|(7\.[0-2]))pdo_cubrid$|^((5\.[3-6])|(7\.[0-4]))cubrid$/.test(version_extension):
|
||||||
case /^couchbase|^event|^gearman$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(extension):
|
case /^couchbase|^event|^gearman$|^geos$|^pdo_oci$|^oci8$|^(pecl_)?http|^pdo_firebird$/.test(extension):
|
||||||
@ -557,7 +557,7 @@ async function getScript(os) {
|
|||||||
const ini_values_csv = await utils.getInput('ini-values', false);
|
const ini_values_csv = await utils.getInput('ini-values', false);
|
||||||
const coverage_driver = await utils.getInput('coverage', false);
|
const coverage_driver = await utils.getInput('coverage', false);
|
||||||
const tools_csv = await utils.getInput('tools', false);
|
const tools_csv = await utils.getInput('tools', false);
|
||||||
const version = await utils.parseVersion(await utils.getInput('php-version', true));
|
const version = await utils.parseVersion(await utils.readPHPVersion());
|
||||||
const ini_file = await utils.parseIniFile(await utils.getInput('ini-file', false));
|
const ini_file = await utils.parseIniFile(await utils.getInput('ini-file', false));
|
||||||
let script = await utils.joins('.', script_path, version, ini_file);
|
let script = await utils.joins('.', script_path, version, ini_file);
|
||||||
if (extension_csv) {
|
if (extension_csv) {
|
||||||
@ -1032,8 +1032,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|||||||
__setModuleDefault(result, mod);
|
__setModuleDefault(result, mod);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
exports.setVariable = exports.parseExtensionSource = exports.customPackage = exports.scriptTool = exports.scriptExtension = exports.joins = exports.getCommand = exports.getUnsupportedLog = exports.suppressOutput = exports.getExtensionPrefix = exports.CSVArray = exports.extensionArray = exports.addLog = exports.stepLog = exports.log = exports.color = exports.asyncForEach = exports.parseIniFile = exports.parseVersion = exports.getManifestURL = exports.getInput = exports.readEnv = void 0;
|
exports.setVariable = exports.readPHPVersion = exports.parseExtensionSource = exports.customPackage = exports.scriptTool = exports.scriptExtension = exports.joins = exports.getCommand = exports.getUnsupportedLog = exports.suppressOutput = exports.getExtensionPrefix = exports.CSVArray = exports.extensionArray = exports.addLog = exports.stepLog = exports.log = exports.color = exports.asyncForEach = exports.parseIniFile = exports.parseVersion = exports.getManifestURL = exports.getInput = exports.readEnv = void 0;
|
||||||
|
const fs_1 = __importDefault(__nccwpck_require__(7147));
|
||||||
const path = __importStar(__nccwpck_require__(1017));
|
const path = __importStar(__nccwpck_require__(1017));
|
||||||
const core = __importStar(__nccwpck_require__(2186));
|
const core = __importStar(__nccwpck_require__(2186));
|
||||||
const fetch = __importStar(__nccwpck_require__(2387));
|
const fetch = __importStar(__nccwpck_require__(2387));
|
||||||
@ -1068,10 +1072,9 @@ async function getManifestURL() {
|
|||||||
}
|
}
|
||||||
exports.getManifestURL = getManifestURL;
|
exports.getManifestURL = getManifestURL;
|
||||||
async function parseVersion(version) {
|
async function parseVersion(version) {
|
||||||
const manifest = await getManifestURL();
|
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case /^(latest|nightly|\d+\.x)$/.test(version):
|
case /^(latest|nightly|\d+\.x)$/.test(version):
|
||||||
return JSON.parse((await fetch.fetch(manifest))['data'])[version];
|
return JSON.parse((await fetch.fetch(await getManifestURL()))['data'])[version];
|
||||||
default:
|
default:
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case version.length > 1:
|
case version.length > 1:
|
||||||
@ -1279,6 +1282,21 @@ async function parseExtensionSource(extension, prefix) {
|
|||||||
return await joins('\nadd_extension_from_source', ...matches.splice(1, matches.length), prefix);
|
return await joins('\nadd_extension_from_source', ...matches.splice(1, matches.length), prefix);
|
||||||
}
|
}
|
||||||
exports.parseExtensionSource = parseExtensionSource;
|
exports.parseExtensionSource = parseExtensionSource;
|
||||||
|
async function readPHPVersion() {
|
||||||
|
const version = await getInput('php-version', false);
|
||||||
|
if (version) {
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
const versionFile = (await getInput('php-version-file', false)) || '.php-version';
|
||||||
|
if (fs_1.default.existsSync(versionFile)) {
|
||||||
|
return fs_1.default.readFileSync(versionFile, 'utf8').replace(/[\r\n]/g, '');
|
||||||
|
}
|
||||||
|
else if (versionFile !== '.php-version') {
|
||||||
|
throw new Error(`Could not find '${versionFile}' file.`);
|
||||||
|
}
|
||||||
|
return 'latest';
|
||||||
|
}
|
||||||
|
exports.readPHPVersion = readPHPVersion;
|
||||||
async function setVariable(variable, command, os) {
|
async function setVariable(variable, command, os) {
|
||||||
switch (os) {
|
switch (os) {
|
||||||
case 'win32':
|
case 'win32':
|
||||||
@ -3825,11 +3843,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
};
|
};
|
||||||
var _a;
|
var _a;
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rename = exports.readlink = exports.readdir = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0;
|
exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0;
|
||||||
const fs = __importStar(__nccwpck_require__(7147));
|
const fs = __importStar(__nccwpck_require__(7147));
|
||||||
const path = __importStar(__nccwpck_require__(1017));
|
const path = __importStar(__nccwpck_require__(1017));
|
||||||
_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;
|
_a = fs.promises
|
||||||
|
// export const {open} = 'fs'
|
||||||
|
, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;
|
||||||
|
// export const {open} = 'fs'
|
||||||
exports.IS_WINDOWS = process.platform === 'win32';
|
exports.IS_WINDOWS = process.platform === 'win32';
|
||||||
|
// See https://github.com/nodejs/node/blob/d0153aee367422d0858105abec186da4dff0a0c5/deps/uv/include/uv/win.h#L691
|
||||||
|
exports.UV_FS_O_EXLOCK = 0x10000000;
|
||||||
|
exports.READONLY = fs.constants.O_RDONLY;
|
||||||
function exists(fsPath) {
|
function exists(fsPath) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
try {
|
try {
|
||||||
@ -4010,12 +4034,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0;
|
exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0;
|
||||||
const assert_1 = __nccwpck_require__(9491);
|
const assert_1 = __nccwpck_require__(9491);
|
||||||
const childProcess = __importStar(__nccwpck_require__(2081));
|
|
||||||
const path = __importStar(__nccwpck_require__(1017));
|
const path = __importStar(__nccwpck_require__(1017));
|
||||||
const util_1 = __nccwpck_require__(3837);
|
|
||||||
const ioUtil = __importStar(__nccwpck_require__(1962));
|
const ioUtil = __importStar(__nccwpck_require__(1962));
|
||||||
const exec = util_1.promisify(childProcess.exec);
|
|
||||||
const execFile = util_1.promisify(childProcess.execFile);
|
|
||||||
/**
|
/**
|
||||||
* Copies a file or folder.
|
* Copies a file or folder.
|
||||||
* Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js
|
* Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js
|
||||||
@ -4096,61 +4116,23 @@ exports.mv = mv;
|
|||||||
function rmRF(inputPath) {
|
function rmRF(inputPath) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
if (ioUtil.IS_WINDOWS) {
|
if (ioUtil.IS_WINDOWS) {
|
||||||
// Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another
|
|
||||||
// program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del.
|
|
||||||
// Check for invalid characters
|
// Check for invalid characters
|
||||||
// https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file
|
// https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file
|
||||||
if (/[*"<>|]/.test(inputPath)) {
|
if (/[*"<>|]/.test(inputPath)) {
|
||||||
throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows');
|
throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const cmdPath = ioUtil.getCmdPath();
|
// note if path does not exist, error is silent
|
||||||
if (yield ioUtil.isDirectory(inputPath, true)) {
|
yield ioUtil.rm(inputPath, {
|
||||||
yield exec(`${cmdPath} /s /c "rd /s /q "%inputPath%""`, {
|
force: true,
|
||||||
env: { inputPath }
|
maxRetries: 3,
|
||||||
|
recursive: true,
|
||||||
|
retryDelay: 300
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
yield exec(`${cmdPath} /s /c "del /f /a "%inputPath%""`, {
|
|
||||||
env: { inputPath }
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (err) {
|
catch (err) {
|
||||||
// if you try to delete a file that doesn't exist, desired result is achieved
|
throw new Error(`File was unable to be removed ${err}`);
|
||||||
// other errors are valid
|
|
||||||
if (err.code !== 'ENOENT')
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
// Shelling out fails to remove a symlink folder with missing source, this unlink catches that
|
|
||||||
try {
|
|
||||||
yield ioUtil.unlink(inputPath);
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
// if you try to delete a file that doesn't exist, desired result is achieved
|
|
||||||
// other errors are valid
|
|
||||||
if (err.code !== 'ENOENT')
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
let isDir = false;
|
|
||||||
try {
|
|
||||||
isDir = yield ioUtil.isDirectory(inputPath);
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
// if you try to delete a file that doesn't exist, desired result is achieved
|
|
||||||
// other errors are valid
|
|
||||||
if (err.code !== 'ENOENT')
|
|
||||||
throw err;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (isDir) {
|
|
||||||
yield execFile(`rm`, [`-rf`, `${inputPath}`]);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
yield ioUtil.unlink(inputPath);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
1881
package-lock.json
generated
1881
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
26
package.json
26
package.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "setup-php",
|
"name": "setup-php",
|
||||||
"version": "2.24.0",
|
"version": "2.25.1",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "Setup PHP for use with GitHub Actions",
|
"description": "Setup PHP for use with GitHub Actions",
|
||||||
"main": "lib/install.js",
|
"main": "lib/install.js",
|
||||||
@ -36,26 +36,26 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.10.0",
|
"@actions/core": "^1.10.0",
|
||||||
"@actions/exec": "^1.1.1",
|
"@actions/exec": "^1.1.1",
|
||||||
"@actions/io": "^1.1.2"
|
"@actions/io": "^1.1.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^29.4.0",
|
"@types/jest": "^29.5.0",
|
||||||
"@types/node": "^18.11.18",
|
"@types/node": "^18.15.11",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.49.0",
|
"@typescript-eslint/eslint-plugin": "^5.59.0",
|
||||||
"@typescript-eslint/parser": "^5.49.0",
|
"@typescript-eslint/parser": "^5.59.0",
|
||||||
"@vercel/ncc": "^0.36.1",
|
"@vercel/ncc": "^0.36.1",
|
||||||
"eslint": "^8.32.0",
|
"eslint": "^8.38.0",
|
||||||
"eslint-config-prettier": "^8.6.0",
|
"eslint-config-prettier": "^8.8.0",
|
||||||
"eslint-plugin-import": "^2.27.5",
|
"eslint-plugin-import": "^2.27.5",
|
||||||
"eslint-plugin-jest": "^27.2.1",
|
"eslint-plugin-jest": "^27.2.1",
|
||||||
"eslint-plugin-prettier": "^4.2.1",
|
"eslint-plugin-prettier": "^4.2.1",
|
||||||
"jest": "^29.4.1",
|
"jest": "^29.5.0",
|
||||||
"jest-circus": "^29.4.1",
|
"jest-circus": "^29.5.0",
|
||||||
"nock": "^13.3.0",
|
"nock": "^13.3.0",
|
||||||
"prettier": "^2.8.3",
|
"prettier": "^2.8.7",
|
||||||
"simple-git-hooks": "^2.8.1",
|
"simple-git-hooks": "^2.8.1",
|
||||||
"ts-jest": "^29.0.5",
|
"ts-jest": "^29.1.0",
|
||||||
"typescript": "^4.9.4"
|
"typescript": "^5.0.4"
|
||||||
},
|
},
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/shivammathur/setup-php/issues"
|
"url": "https://github.com/shivammathur/setup-php/issues"
|
||||||
|
@ -30,9 +30,11 @@ psr=psr
|
|||||||
raphf=raphf
|
raphf=raphf
|
||||||
rdkafka=rdkafka
|
rdkafka=rdkafka
|
||||||
redis=redis
|
redis=redis
|
||||||
|
snmp=snmp
|
||||||
sqlsrv=sqlsrv
|
sqlsrv=sqlsrv
|
||||||
ssh2=ssh2
|
ssh2=ssh2
|
||||||
swoole=swoole
|
swoole=swoole
|
||||||
|
uuid=uuid
|
||||||
v8js=v8js
|
v8js=v8js
|
||||||
vips=vips
|
vips=vips
|
||||||
xdebug=xdebug
|
xdebug=xdebug
|
||||||
|
28
src/configs/mod_priority
Normal file
28
src/configs/mod_priority
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
apc=25
|
||||||
|
apcu_bc=25
|
||||||
|
apcu-bc=25
|
||||||
|
blackfire=30
|
||||||
|
decimal=30
|
||||||
|
ds=30
|
||||||
|
event=30
|
||||||
|
grpc=30
|
||||||
|
http=25
|
||||||
|
pecl_http=25
|
||||||
|
pecl-http=25
|
||||||
|
inotify=30
|
||||||
|
libvirt-php=40
|
||||||
|
mailparse=25
|
||||||
|
maxminddb=30
|
||||||
|
memcached=25
|
||||||
|
mysqlnd=10
|
||||||
|
mysqlnd_ms=30
|
||||||
|
opcache=10
|
||||||
|
pdo=10
|
||||||
|
phalcon=35
|
||||||
|
protobuf=30
|
||||||
|
psr=15
|
||||||
|
rdkafka=30
|
||||||
|
swoole=25
|
||||||
|
vips=30
|
||||||
|
xml=15
|
||||||
|
zstd=30
|
@ -31,14 +31,14 @@ export async function addExtensionDarwin(
|
|||||||
case /.+-.+\/.+@.+/.test(extension):
|
case /.+-.+\/.+@.+/.test(extension):
|
||||||
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
||||||
return;
|
return;
|
||||||
// match 7.4relay...8.2relay
|
// match 7.4relay...8.3relay
|
||||||
// match 5.3blackfire...8.2blackfire
|
// match 5.3blackfire...8.2blackfire
|
||||||
// match 5.3blackfire-(semver)...8.1blackfire-(semver)
|
// match 5.3blackfire-(semver)...8.1blackfire-(semver)
|
||||||
// match couchbase, event, geos, pdo_oci, oci8, http, pecl_http
|
// match couchbase, event, geos, pdo_oci, oci8, http, pecl_http
|
||||||
// match 5.3ioncube...7.4ioncube
|
// match 5.3ioncube...7.4ioncube
|
||||||
// match 7.0phalcon3...7.3phalcon3, 7.2phalcon4...7.4phalcon4, and 7.4phalcon5...8.2phalcon5
|
// match 7.0phalcon3...7.3phalcon3, 7.2phalcon4...7.4phalcon4, and 7.4phalcon5...8.2phalcon5
|
||||||
// match 7.0zephir_parser...8.2zephir_parser
|
// match 7.0zephir_parser...8.2zephir_parser
|
||||||
case /^(7\.4|8\.[0-2])relay(-v?\d+\.\d+\.\d+)?$/.test(version_extension):
|
case /^(7\.4|8\.[0-3])relay(-v?\d+\.\d+\.\d+)?$/.test(version_extension):
|
||||||
case /^(5\.[3-6]|7\.[0-4]|8\.[0-2])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
case /^(5\.[3-6]|7\.[0-4]|8\.[0-2])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||||
version_extension
|
version_extension
|
||||||
):
|
):
|
||||||
@ -83,7 +83,7 @@ export async function addExtensionDarwin(
|
|||||||
add_script += await utils.getUnsupportedLog('pcov', version, 'darwin');
|
add_script += await utils.getUnsupportedLog('pcov', version, 'darwin');
|
||||||
return;
|
return;
|
||||||
// match brew extensions
|
// match brew extensions
|
||||||
case /(?<!5\.[3-5])(amqp|apcu|expect|gnupg|grpc|igbinary|imagick|imap|mailparse|mcrypt|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|ssh2|swoole|xdebug|xdebug2|yaml|zmq)/.test(
|
case /(?<!5\.[3-5])(amqp|apcu|expect|gnupg|grpc|igbinary|imagick|imap|mailparse|mcrypt|memcache|memcached|mongodb|msgpack|protobuf|psr|raphf|rdkafka|redis|snmp|ssh2|swoole|uuid|xdebug|xdebug2|yaml|zmq)/.test(
|
||||||
version_extension
|
version_extension
|
||||||
):
|
):
|
||||||
case /(?<!5\.[3-6])(ds|v8js)/.test(version_extension):
|
case /(?<!5\.[3-6])(ds|v8js)/.test(version_extension):
|
||||||
@ -262,7 +262,7 @@ export async function addExtensionLinux(
|
|||||||
case /.+-.+\/.+@.+/.test(extension):
|
case /.+-.+\/.+@.+/.test(extension):
|
||||||
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
add_script += await utils.parseExtensionSource(extension, ext_prefix);
|
||||||
return;
|
return;
|
||||||
// match 7.4relay...8.2relay
|
// match 7.4relay...8.3relay
|
||||||
// match 5.3blackfire...8.2blackfire
|
// match 5.3blackfire...8.2blackfire
|
||||||
// match 5.3blackfire-(semver)...8.1blackfire-(semver)
|
// match 5.3blackfire-(semver)...8.1blackfire-(semver)
|
||||||
// match 5.3pdo_cubrid...7.2php_cubrid, 5.3cubrid...7.4cubrid
|
// match 5.3pdo_cubrid...7.2php_cubrid, 5.3cubrid...7.4cubrid
|
||||||
@ -270,7 +270,7 @@ export async function addExtensionLinux(
|
|||||||
// match 5.3ioncube...7.4ioncube
|
// match 5.3ioncube...7.4ioncube
|
||||||
// match 7.0phalcon3...7.3phalcon3, 7.2phalcon4...7.4phalcon4, 7.4phalcon5...8.2phalcon5
|
// match 7.0phalcon3...7.3phalcon3, 7.2phalcon4...7.4phalcon4, 7.4phalcon5...8.2phalcon5
|
||||||
// match 7.0zephir_parser...8.2zephir_parser
|
// match 7.0zephir_parser...8.2zephir_parser
|
||||||
case /^(7\.4|8\.[0-2])relay(-v?\d+\.\d+\.\d+)?$/.test(version_extension):
|
case /^(7\.4|8\.[0-3])relay(-v?\d+\.\d+\.\d+)?$/.test(version_extension):
|
||||||
case /^(5\.[3-6]|7\.[0-4]|8\.[0-2])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
case /^(5\.[3-6]|7\.[0-4]|8\.[0-2])blackfire(-\d+\.\d+\.\d+)?$/.test(
|
||||||
version_extension
|
version_extension
|
||||||
):
|
):
|
||||||
|
@ -24,7 +24,7 @@ export async function getScript(os: string): Promise<string> {
|
|||||||
const coverage_driver: string = await utils.getInput('coverage', false);
|
const coverage_driver: string = await utils.getInput('coverage', false);
|
||||||
const tools_csv: string = await utils.getInput('tools', false);
|
const tools_csv: string = await utils.getInput('tools', false);
|
||||||
const version: string = await utils.parseVersion(
|
const version: string = await utils.parseVersion(
|
||||||
await utils.getInput('php-version', true)
|
await utils.readPHPVersion()
|
||||||
);
|
);
|
||||||
const ini_file: string = await utils.parseIniFile(
|
const ini_file: string = await utils.parseIniFile(
|
||||||
await utils.getInput('ini-file', false)
|
await utils.getInput('ini-file', false)
|
||||||
|
@ -65,7 +65,7 @@ Function Add-NightlyExtension {
|
|||||||
if($ts) { $ts_part = 'ts' } else { $ts_part = 'nts' }
|
if($ts) { $ts_part = 'ts' } else { $ts_part = 'nts' }
|
||||||
$repo = "$github/shivammathur/php-extensions-windows"
|
$repo = "$github/shivammathur/php-extensions-windows"
|
||||||
$url = "$repo/releases/download/builds/php$version`_$ts_part`_$arch`_$extension.dll"
|
$url = "$repo/releases/download/builds/php$version`_$ts_part`_$arch`_$extension.dll"
|
||||||
Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile "$ext_dir\php_$extension.dll"
|
Get-File -Url $url -OutFile "$ext_dir\php_$extension.dll"
|
||||||
if(Test-Path "$ext_dir\php_$extension.dll") {
|
if(Test-Path "$ext_dir\php_$extension.dll") {
|
||||||
Enable-Extension $extension > $null
|
Enable-Extension $extension > $null
|
||||||
} else {
|
} else {
|
||||||
|
@ -48,8 +48,19 @@ enable_extension() {
|
|||||||
[ -d "$modules_dir" ] && sudo find "$modules_dir" -path "*disabled*$1" -delete
|
[ -d "$modules_dir" ] && sudo find "$modules_dir" -path "*disabled*$1" -delete
|
||||||
enable_extension_dependencies "$1" "$2"
|
enable_extension_dependencies "$1" "$2"
|
||||||
enable_cache_extension_dependencies "$1" "$2"
|
enable_cache_extension_dependencies "$1" "$2"
|
||||||
|
if ! [[ "${version:?}" =~ ${old_versions:?} ]] && command -v phpenmod >/dev/null 2>&1; then
|
||||||
|
mod="${ini_dir:?}"/../mods-available/"$1".ini
|
||||||
|
if ! [ -e "$mod" ]; then
|
||||||
|
priority="${3:-20}";
|
||||||
|
mod_priority_line="$(grep -E "^$1=" "${src:?}/configs/mod_priority")";
|
||||||
|
[ -n "$mod_priority_line" ] && priority=$(echo "$mod_priority_line" | cut -d'=' -f 2)
|
||||||
|
(echo "; priority=$priority"; echo "$2=${ext_dir:?}/$1.so") | sudo tee "$mod" >/dev/null
|
||||||
|
fi
|
||||||
|
sudo phpenmod -v "$version" "$1" >/dev/null 2>&1
|
||||||
|
else
|
||||||
echo "$2=${ext_dir:?}/$1.so" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null
|
echo "$2=${ext_dir:?}/$1.so" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to enable array of extensions
|
# Function to enable array of extensions
|
||||||
@ -114,7 +125,7 @@ disable_all_shared() {
|
|||||||
sudo find "${ini_dir:-$scan_dir}"/.. -name "*.ini" -not -path "*php.ini" -not -path "*phar.ini" -not -path "*pecl.ini" -not -path "*mods-available*" -delete >/dev/null 2>&1 || true
|
sudo find "${ini_dir:-$scan_dir}"/.. -name "*.ini" -not -path "*php.ini" -not -path "*phar.ini" -not -path "*pecl.ini" -not -path "*mods-available*" -delete >/dev/null 2>&1 || true
|
||||||
mkdir -p /tmp/extdisabled/"$version"
|
mkdir -p /tmp/extdisabled/"$version"
|
||||||
sudo rm -f /tmp/php"$version"_extensions
|
sudo rm -f /tmp/php"$version"_extensions
|
||||||
sudo find "$ext_dir" -name '*.so' -print0 | xargs -0 -n 1 basename -s .so | xargs -n 1 -I{} touch /tmp/extdisabled/"$version"/{}
|
sudo find "$ext_dir" -name '*.so' -print0 | xargs -0 -n 1 basename -s .so | xargs -I{} touch /tmp/extdisabled/"$version"/{}
|
||||||
add_log "${tick:?}" "none" "Disabled all shared extensions"
|
add_log "${tick:?}" "none" "Disabled all shared extensions"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ Function Add-Blackfire() {
|
|||||||
$status="Enabled"
|
$status="Enabled"
|
||||||
} else {
|
} else {
|
||||||
$nts = if (!$installed.ThreadSafe) { "_nts" } else { "" }
|
$nts = if (!$installed.ThreadSafe) { "_nts" } else { "" }
|
||||||
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
|
Get-File -Url "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
|
||||||
Enable-PhpExtension -Extension blackfire -Path $php_dir
|
Enable-PhpExtension -Extension blackfire -Path $php_dir
|
||||||
$status="Installed and enabled"
|
$status="Installed and enabled"
|
||||||
}
|
}
|
||||||
|
@ -17,12 +17,6 @@ add_couchbase_clibs() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
add_couchbase_cxxlibs() {
|
add_couchbase_cxxlibs() {
|
||||||
if [ "$VERSION_ID" = "18.04" ]; then
|
|
||||||
if ! command -v gcc-8 >/dev/null || ! command -v g++-8 >/dev/null; then
|
|
||||||
install_packages gcc-8 g++-8 -y
|
|
||||||
fi
|
|
||||||
printf "gcc g++" | xargs -d ' ' -I {} sudo update-alternatives --install /usr/bin/{} {} /usr/bin/{}-8 8
|
|
||||||
fi
|
|
||||||
if [ "${runner:?}" = "self-hosted" ]; then
|
if [ "${runner:?}" = "self-hosted" ]; then
|
||||||
add_list cmake https://apt.kitware.com/ubuntu/ https://apt.kitware.com/keys/kitware-archive-latest.asc "$VERSION_CODENAME" main
|
add_list cmake https://apt.kitware.com/ubuntu/ https://apt.kitware.com/keys/kitware-archive-latest.asc "$VERSION_CODENAME" main
|
||||||
fi
|
fi
|
||||||
|
@ -13,7 +13,7 @@ Function Get-ICUUrl() {
|
|||||||
$trunk = "https://windows.php.net"
|
$trunk = "https://windows.php.net"
|
||||||
$urls=@("${trunk}/downloads/php-sdk/deps/${vs_version}/${arch}", "${trunk}/downloads/php-sdk/deps/archives/${vs_version}/${arch}")
|
$urls=@("${trunk}/downloads/php-sdk/deps/${vs_version}/${arch}", "${trunk}/downloads/php-sdk/deps/archives/${vs_version}/${arch}")
|
||||||
foreach ($url in $urls) {
|
foreach ($url in $urls) {
|
||||||
$web_content = Invoke-WebRequest -Uri $url
|
$web_content = Get-File -Url $url
|
||||||
foreach ($link in $web_content.Links) {
|
foreach ($link in $web_content.Links) {
|
||||||
if ($link -match "/.*ICU-${icu_version}.*/") {
|
if ($link -match "/.*ICU-${icu_version}.*/") {
|
||||||
return $trunk + $link.HREF
|
return $trunk + $link.HREF
|
||||||
@ -32,7 +32,7 @@ Function Repair-ICU() {
|
|||||||
$zip_url = Get-ICUUrl $icu.Groups[1].Value $installed.Architecture $vs
|
$zip_url = Get-ICUUrl $icu.Groups[1].Value $installed.Architecture $vs
|
||||||
if ($zip_url -ne '') {
|
if ($zip_url -ne '') {
|
||||||
New-Item -Path "$php_dir" -Name "icu" -ItemType "directory" -Force > $null 2>&1
|
New-Item -Path "$php_dir" -Name "icu" -ItemType "directory" -Force > $null 2>&1
|
||||||
Invoke-WebRequest -Uri $zip_url -OutFile "$php_dir\icu\icu.zip"
|
Get-File -Url $zip_url -OutFile "$php_dir\icu\icu.zip"
|
||||||
Expand-Archive -Path $php_dir\icu\icu.zip -DestinationPath $php_dir\icu -Force
|
Expand-Archive -Path $php_dir\icu\icu.zip -DestinationPath $php_dir\icu -Force
|
||||||
Get-ChildItem $php_dir\icu\bin -Filter *.dll | Copy-Item -Destination $php_dir -Force
|
Get-ChildItem $php_dir\icu\bin -Filter *.dll | Copy-Item -Destination $php_dir -Force
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ Function Add-Ioncube() {
|
|||||||
if (-not($installed.ThreadSafe)) {
|
if (-not($installed.ThreadSafe)) {
|
||||||
$ts_part = "_nonts"
|
$ts_part = "_nonts"
|
||||||
}
|
}
|
||||||
Invoke-WebRequest -Uri "https://downloads.ioncube.com/loader_downloads/ioncube_loaders_win$ts_part`_vc$vc`_$arch_part.zip" -OutFile $ext_dir\ioncube.zip
|
Get-File -Url "https://downloads.ioncube.com/loader_downloads/ioncube_loaders_win$ts_part`_vc$vc`_$arch_part.zip" -OutFile $ext_dir\ioncube.zip
|
||||||
Expand-Archive -Path $ext_dir\ioncube.zip -DestinationPath $ext_dir -Force
|
Expand-Archive -Path $ext_dir\ioncube.zip -DestinationPath $ext_dir -Force
|
||||||
Copy-Item $ext_dir\ioncube\ioncube_loader_win_$version.dll $ext_dir\php_ioncube.dll
|
Copy-Item $ext_dir\ioncube\ioncube_loader_win_$version.dll $ext_dir\php_ioncube.dll
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ Function Add-InstantClient() {
|
|||||||
if ($arch -eq 'x86') {
|
if ($arch -eq 'x86') {
|
||||||
$suffix = 'nt'
|
$suffix = 'nt'
|
||||||
}
|
}
|
||||||
Invoke-WebRequest -Uri https://download.oracle.com/otn_software/nt/instantclient/instantclient-basiclite-$suffix.zip -OutFile $php_dir\instantclient.zip
|
Get-File -Url https://download.oracle.com/otn_software/nt/instantclient/instantclient-basiclite-$suffix.zip -OutFile $php_dir\instantclient.zip
|
||||||
Expand-Archive -Path $php_dir\instantclient.zip -DestinationPath $php_dir -Force
|
Expand-Archive -Path $php_dir\instantclient.zip -DestinationPath $php_dir -Force
|
||||||
Copy-Item $php_dir\instantclient*\* $php_dir
|
Copy-Item $php_dir\instantclient*\* $php_dir
|
||||||
}
|
}
|
||||||
@ -71,7 +71,7 @@ Function Add-Oci() {
|
|||||||
Copy-Item -Path $oci8DLL -Destination $ext_dir\php_oci8.dll
|
Copy-Item -Path $oci8DLL -Destination $ext_dir\php_oci8.dll
|
||||||
} else {
|
} else {
|
||||||
$status = 'Installed and enabled'
|
$status = 'Installed and enabled'
|
||||||
Invoke-WebRequest -Uri (Get-Oci8Url) -OutFile $php_dir\oci8.zip
|
Get-File -Url (Get-Oci8Url) -OutFile $php_dir\oci8.zip
|
||||||
Expand-Archive -Path $php_dir\oci8.zip -DestinationPath $ext_dir -Force
|
Expand-Archive -Path $php_dir\oci8.zip -DestinationPath $ext_dir -Force
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,14 +13,14 @@ Function Get-PhalconReleaseAssetUrl() {
|
|||||||
try {
|
try {
|
||||||
$match = (Invoke-RestMethod -Uri "$domain/$releases/tags/v$Semver").assets | Select-String -Pattern "browser_download_url=.*(phalcon_${arch}_.*_php${version}_${extension_version}.*[0-9]${nts}.zip)"
|
$match = (Invoke-RestMethod -Uri "$domain/$releases/tags/v$Semver").assets | Select-String -Pattern "browser_download_url=.*(phalcon_${arch}_.*_php${version}_${extension_version}.*[0-9]${nts}.zip)"
|
||||||
} catch {
|
} catch {
|
||||||
$match = (Invoke-WebRequest -Uri "$github/$releases/expanded_assets/v$Semver").Links.href | Select-String -Pattern "(phalcon_${arch}_.*_php${version}_${extension_version}.*[0-9]${nts}.zip)"
|
$match = (Get-File -Url "$github/$releases/expanded_assets/v$Semver").Links.href | Select-String -Pattern "(phalcon_${arch}_.*_php${version}_${extension_version}.*[0-9]${nts}.zip)"
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$nts = if (!$installed.ThreadSafe) { "-nts" } else { "-ts" }
|
$nts = if (!$installed.ThreadSafe) { "-nts" } else { "-ts" }
|
||||||
try {
|
try {
|
||||||
$match = (Invoke-RestMethod -Uri "$domain/$releases/tags/v$Semver").assets | Select-String -Pattern "browser_download_url=.*(phalcon-php${version}${nts}-windows.*-x64.zip)"
|
$match = (Invoke-RestMethod -Uri "$domain/$releases/tags/v$Semver").assets | Select-String -Pattern "browser_download_url=.*(phalcon-php${version}${nts}-windows.*-x64.zip)"
|
||||||
} catch {
|
} catch {
|
||||||
$match = (Invoke-WebRequest -Uri "$github/$releases/expanded_assets/v$Semver").Links.href | Select-String -Pattern "(phalcon-php${version}${nts}-windows.*-x64.zip)"
|
$match = (Get-File -Url "$github/$releases/expanded_assets/v$Semver").Links.href | Select-String -Pattern "(phalcon-php${version}${nts}-windows.*-x64.zip)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if($NULL -ne $match) {
|
if($NULL -ne $match) {
|
||||||
@ -39,7 +39,7 @@ Function Add-PhalconFromGitHub() {
|
|||||||
)
|
)
|
||||||
$zip_url = Get-PhalconReleaseAssetUrl $Semver
|
$zip_url = Get-PhalconReleaseAssetUrl $Semver
|
||||||
if($zip_url) {
|
if($zip_url) {
|
||||||
Invoke-WebRequest -Uri $zip_url -OutFile $ENV:RUNNER_TOOL_CACHE\phalcon.zip > $null 2>&1
|
Get-File -Url $zip_url -OutFile $ENV:RUNNER_TOOL_CACHE\phalcon.zip > $null 2>&1
|
||||||
Expand-Archive -Path $ENV:RUNNER_TOOL_CACHE\phalcon.zip -DestinationPath $ENV:RUNNER_TOOL_CACHE\phalcon -Force > $null 2>&1
|
Expand-Archive -Path $ENV:RUNNER_TOOL_CACHE\phalcon.zip -DestinationPath $ENV:RUNNER_TOOL_CACHE\phalcon -Force > $null 2>&1
|
||||||
Copy-Item -Path "$ENV:RUNNER_TOOL_CACHE\phalcon\php_phalcon.dll" -Destination "$ext_dir\php_phalcon.dll"
|
Copy-Item -Path "$ENV:RUNNER_TOOL_CACHE\phalcon\php_phalcon.dll" -Destination "$ext_dir\php_phalcon.dll"
|
||||||
Enable-PhpExtension -Extension phalcon -Path $php_dir
|
Enable-PhpExtension -Extension phalcon -Path $php_dir
|
||||||
|
@ -27,7 +27,7 @@ get_os_suffix() {
|
|||||||
# Get openssl suffix in relay artifact URL.
|
# Get openssl suffix in relay artifact URL.
|
||||||
get_openssl_suffix() {
|
get_openssl_suffix() {
|
||||||
openssl_3=$(php -r "echo strpos(OPENSSL_VERSION_TEXT, 'SSL 3') !== false;")
|
openssl_3=$(php -r "echo strpos(OPENSSL_VERSION_TEXT, 'SSL 3') !== false;")
|
||||||
[ "$openssl_3" = "1" ] && echo '.libssl3' || echo ''
|
[ "$openssl_3" = "1" ] && echo '+libssl3' || echo ''
|
||||||
}
|
}
|
||||||
|
|
||||||
# Change library paths in relay binary.
|
# Change library paths in relay binary.
|
||||||
@ -110,11 +110,14 @@ add_relay_helper() {
|
|||||||
os_suffix="$(get_os_suffix)"
|
os_suffix="$(get_os_suffix)"
|
||||||
openssl_suffix="$(get_openssl_suffix)"
|
openssl_suffix="$(get_openssl_suffix)"
|
||||||
artifact_file_name="relay-$relay_version-php${version:?}-$os_suffix-$arch$openssl_suffix.tar.gz"
|
artifact_file_name="relay-$relay_version-php${version:?}-$os_suffix-$arch$openssl_suffix.tar.gz"
|
||||||
url="$relay_releases"/download/"$relay_version"/"$artifact_file_name"
|
url="$relay_trunk"/"$relay_version"/"$artifact_file_name"
|
||||||
fallback_url="$relay_trunk"/"$artifact_file_name"
|
get -q -n /tmp/relay.tar.gz "$url"
|
||||||
get -q -n /tmp/relay.tar.gz "$url" "$fallback_url"
|
if (! [ -e /tmp/relay.tar.gz ] || ! file /tmp/relay.tar.gz | grep -q 'gzip'); then
|
||||||
if [ "$openssl_suffix" = '.libssl3' ] && (! [ -e /tmp/relay.tar.gz ] || ! file /tmp/relay.tar.gz | grep -q 'gzip'); then
|
if [ "$openssl_suffix" = '+libssl3' ]; then
|
||||||
get -q -n /tmp/relay.tar.gz "${url/.libssl3/}" "${fallback_url/.libssl3/}"
|
get -q -n /tmp/relay.tar.gz "${url/+libssl3/}"
|
||||||
|
else
|
||||||
|
get -q -n /tmp/relay.tar.gz "${url/.tar/+libssl3.tar}"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
if [ -e /tmp/relay.tar.gz ] && file /tmp/relay.tar.gz | grep -q 'gzip'; then
|
if [ -e /tmp/relay.tar.gz ] && file /tmp/relay.tar.gz | grep -q 'gzip'; then
|
||||||
sudo tar --strip-components=1 -xzf /tmp/relay.tar.gz -C "${ext_dir:?}"
|
sudo tar --strip-components=1 -xzf /tmp/relay.tar.gz -C "${ext_dir:?}"
|
||||||
|
@ -8,10 +8,11 @@ Function Get-ZephirParserReleaseAssetUrl() {
|
|||||||
)
|
)
|
||||||
$repo = 'zephir-lang/php-zephir-parser'
|
$repo = 'zephir-lang/php-zephir-parser'
|
||||||
$zp_releases = "$github/$repo/releases"
|
$zp_releases = "$github/$repo/releases"
|
||||||
|
$nts = if (!$installed.ThreadSafe) { "nts" } else { "ts" }
|
||||||
try {
|
try {
|
||||||
$match = (Invoke-RestMethod -Uri "https://api.github.com/repos/$repo/tags/$extension_version").assets | Select-String -Pattern "browser_download_url=.*(zephir_parser-php-${version}.*windows.*.zip)"
|
$match = (Invoke-RestMethod -Uri "https://api.github.com/repos/$repo/tags/$extension_version").assets | Select-String -Pattern "browser_download_url=.*(zephir_parser-php-${version}-$nts-windows.*.zip)"
|
||||||
} catch {
|
} catch {
|
||||||
$match = (Invoke-WebRequest -Uri "$zp_releases/expanded_assets/$extension_version").Links.href | Select-String -Pattern "(zephir_parser-php-${version}.*windows.*.zip)"
|
$match = (Get-File -Url "$zp_releases/expanded_assets/$extension_version").Links.href | Select-String -Pattern "(zephir_parser-php-${version}-$nts-windows.*.zip)"
|
||||||
}
|
}
|
||||||
if($NULL -ne $match) {
|
if($NULL -ne $match) {
|
||||||
return "$zp_releases/download/$extension_version/$($match.Matches[0].Groups[1].Value)"
|
return "$zp_releases/download/$extension_version/$($match.Matches[0].Groups[1].Value)"
|
||||||
@ -30,7 +31,7 @@ Function Get-ZephirParserVersion() {
|
|||||||
$repo = 'zephir-lang/php-zephir-parser'
|
$repo = 'zephir-lang/php-zephir-parser'
|
||||||
$zp_releases = "$github/$repo/releases"
|
$zp_releases = "$github/$repo/releases"
|
||||||
if($extension -eq 'zephir_parser') {
|
if($extension -eq 'zephir_parser') {
|
||||||
return (Invoke-WebRequest -UseBasicParsing -Uri $zp_releases/latest).BaseResponse.RequestMessage.RequestUri.Segments[-1]
|
return (Get-File -Url $zp_releases/latest).BaseResponse.RequestMessage.RequestUri.Segments[-1]
|
||||||
} else {
|
} else {
|
||||||
return 'v' + ($extension.split('-')[1] -replace 'v')
|
return 'v' + ($extension.split('-')[1] -replace 'v')
|
||||||
}
|
}
|
||||||
@ -47,7 +48,7 @@ Function Add-ZephirParserFromGitHub() {
|
|||||||
$extension_version = Get-ZephirParserVersion $extension
|
$extension_version = Get-ZephirParserVersion $extension
|
||||||
$zip_url = Get-ZephirParserReleaseAssetUrl $extension_version
|
$zip_url = Get-ZephirParserReleaseAssetUrl $extension_version
|
||||||
if($zip_url) {
|
if($zip_url) {
|
||||||
Invoke-WebRequest -Uri $zip_url -OutFile $ENV:RUNNER_TOOL_CACHE\zp.zip > $null 2>&1
|
Get-File -Url $zip_url -OutFile $ENV:RUNNER_TOOL_CACHE\zp.zip > $null 2>&1
|
||||||
Expand-Archive -Path $ENV:RUNNER_TOOL_CACHE\zp.zip -DestinationPath $ENV:RUNNER_TOOL_CACHE\zp -Force > $null 2>&1
|
Expand-Archive -Path $ENV:RUNNER_TOOL_CACHE\zp.zip -DestinationPath $ENV:RUNNER_TOOL_CACHE\zp -Force > $null 2>&1
|
||||||
Copy-Item -Path "$ENV:RUNNER_TOOL_CACHE\zp\php_zephir_parser.dll" -Destination "$ext_dir\php_zephir_parser.dll"
|
Copy-Item -Path "$ENV:RUNNER_TOOL_CACHE\zp\php_zephir_parser.dll" -Destination "$ext_dir\php_zephir_parser.dll"
|
||||||
Enable-PhpExtension -Extension zephir_parser -Path $php_dir
|
Enable-PhpExtension -Extension zephir_parser -Path $php_dir
|
||||||
|
@ -12,10 +12,11 @@ get_zephir_parser_version() {
|
|||||||
# Add zephir_parser helper
|
# Add zephir_parser helper
|
||||||
add_zephir_parser_helper() {
|
add_zephir_parser_helper() {
|
||||||
local ext=$1
|
local ext=$1
|
||||||
|
nts="${ts:?}" && nts="${nts/z/}"
|
||||||
ext_version=$(get_zephir_parser_version "$ext")
|
ext_version=$(get_zephir_parser_version "$ext")
|
||||||
[ "$(uname -s)" = "Linux" ] && os_suffix=ubuntu || os_suffix=macos
|
[ "$(uname -s)" = "Linux" ] && os_suffix=ubuntu || os_suffix=macos
|
||||||
build_name=$(get -s -n "" https://api.github.com/repos/"$repo"/releases/tags/"$ext_version" | grep -Eo "zephir_parser-php-${version:?}.*$os_suffix-.*.zip" | head -n 1)
|
build_name=$(get -s -n "" https://api.github.com/repos/"$repo"/releases/tags/"$ext_version" | grep -Eo "zephir_parser-php-${version:?}-$nts-$os_suffix-.*.zip" | head -n 1)
|
||||||
[ -z "$build_name" ] && build_name=$(get -s -n "" "$zp_releases"/expanded_assets/"$ext_version" | grep -Eo "zephir_parser-php-${version:?}.*$os_suffix-.*.zip" | head -n 1)
|
[ -z "$build_name" ] && build_name=$(get -s -n "" "$zp_releases"/expanded_assets/"$ext_version" | grep -Eo "zephir_parser-php-${version:?}-$nts-$os_suffix-.*.zip" | head -n 1)
|
||||||
get -q -e "/tmp/zp.zip" "$zp_releases"/download/"$ext_version"/"$build_name"
|
get -q -e "/tmp/zp.zip" "$zp_releases"/download/"$ext_version"/"$build_name"
|
||||||
sudo unzip -o "/tmp/zp.zip" -d "${ext_dir:?}"
|
sudo unzip -o "/tmp/zp.zip" -d "${ext_dir:?}"
|
||||||
enable_extension zephir_parser extension
|
enable_extension zephir_parser extension
|
||||||
|
@ -15,10 +15,15 @@ self_hosted_helper() {
|
|||||||
install_packages apt-transport-https ca-certificates curl file make jq unzip autoconf automake gcc g++ gnupg
|
install_packages apt-transport-https ca-certificates curl file make jq unzip autoconf automake gcc g++ gnupg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Function to fix broken packages.
|
||||||
|
fix_broken_packages() {
|
||||||
|
sudo apt --fix-broken install >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
# Function to install a package
|
# Function to install a package
|
||||||
install_packages() {
|
install_packages() {
|
||||||
packages=("$@")
|
packages=("$@")
|
||||||
$apt_install "${packages[@]}" >/dev/null 2>&1 || (update_lists && $apt_install "${packages[@]}" >/dev/null 2>&1)
|
$apt_install "${packages[@]}" >/dev/null 2>&1 || (update_lists && fix_broken_packages && $apt_install "${packages[@]}" >/dev/null 2>&1)
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to disable an extension.
|
# Function to disable an extension.
|
||||||
@ -96,7 +101,7 @@ add_devtools() {
|
|||||||
|
|
||||||
# Function to setup the nightly build from shivammathur/php-builder
|
# Function to setup the nightly build from shivammathur/php-builder
|
||||||
setup_nightly() {
|
setup_nightly() {
|
||||||
run_script "php-builder" "${runner:?}" "$version" "${debug:?}" ${ts:?}
|
run_script "php-builder" "${runner:?}" "$version" "${debug:?}" "${ts:?}"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to setup PHP 5.3, PHP 5.4 and PHP 5.5.
|
# Function to setup PHP 5.3, PHP 5.4 and PHP 5.5.
|
||||||
|
@ -17,7 +17,7 @@ Function Edit-ComposerConfig() {
|
|||||||
php -r "try {`$p=new Phar('$tool_path.phar', 0);exit(0);} catch(Exception `$e) {exit(1);}"
|
php -r "try {`$p=new Phar('$tool_path.phar', 0);exit(0);} catch(Exception `$e) {exit(1);}"
|
||||||
if ($? -eq $False) {
|
if ($? -eq $False) {
|
||||||
Add-Log "$cross" "composer" "Could not download composer"
|
Add-Log "$cross" "composer" "Could not download composer"
|
||||||
exit 1;
|
Write-Error "Could not download composer" -ErrorAction Stop
|
||||||
}
|
}
|
||||||
New-Item -ItemType Directory -Path $composer_bin -Force > $null 2>&1
|
New-Item -ItemType Directory -Path $composer_bin -Force > $null 2>&1
|
||||||
if (-not(Test-Path $composer_json)) {
|
if (-not(Test-Path $composer_json)) {
|
||||||
@ -152,7 +152,7 @@ Function Add-Tool() {
|
|||||||
} catch {
|
} catch {
|
||||||
if($url -match '.*github.com.*releases.*latest.*') {
|
if($url -match '.*github.com.*releases.*latest.*') {
|
||||||
try {
|
try {
|
||||||
$url = $url.replace("releases/latest/download", "releases/download/" + ([regex]::match((Invoke-WebRequest -Uri ($url.split('/release')[0] + "/releases")).Content, "([0-9]+\.[0-9]+\.[0-9]+)/" + ($url.Substring($url.LastIndexOf("/") + 1))).Groups[0].Value).split('/')[0])
|
$url = $url.replace("releases/latest/download", "releases/download/" + ([regex]::match((Get-File -Url ($url.split('/release')[0] + "/releases")).Content, "([0-9]+\.[0-9]+\.[0-9]+)/" + ($url.Substring($url.LastIndexOf("/") + 1))).Groups[0].Value).split('/')[0])
|
||||||
$status_code = (Invoke-WebRequest -Passthru -Uri $url -OutFile $tool_path).StatusCode
|
$status_code = (Invoke-WebRequest -Passthru -Uri $url -OutFile $tool_path).StatusCode
|
||||||
} catch { }
|
} catch { }
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ Function Add-Blackfire() {
|
|||||||
}
|
}
|
||||||
$cli_version = (Invoke-RestMethod https://blackfire.io/api/v1/releases).cli
|
$cli_version = (Invoke-RestMethod https://blackfire.io/api/v1/releases).cli
|
||||||
$url = "https://packages.blackfire.io/binaries/blackfire/${cli_version}/blackfire-windows_${arch_name}.zip"
|
$url = "https://packages.blackfire.io/binaries/blackfire/${cli_version}/blackfire-windows_${arch_name}.zip"
|
||||||
Invoke-WebRequest -Uri $url -OutFile $bin_dir\blackfire.zip >$null 2>&1
|
Get-File -Url $url -OutFile $bin_dir\blackfire.zip >$null 2>&1
|
||||||
Expand-Archive -Path $bin_dir\blackfire.zip -DestinationPath $bin_dir -Force >$null 2>&1
|
Expand-Archive -Path $bin_dir\blackfire.zip -DestinationPath $bin_dir -Force >$null 2>&1
|
||||||
Add-ToProfile $current_profile 'blackfire' "New-Alias blackfire $bin_dir\blackfire.exe"
|
Add-ToProfile $current_profile 'blackfire' "New-Alias blackfire $bin_dir\blackfire.exe"
|
||||||
if ((Test-Path env:BLACKFIRE_SERVER_ID) -and (Test-Path env:BLACKFIRE_SERVER_TOKEN)) {
|
if ((Test-Path env:BLACKFIRE_SERVER_ID) -and (Test-Path env:BLACKFIRE_SERVER_TOKEN)) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
Function Get-ProtobufTag() {
|
Function Get-ProtobufTag() {
|
||||||
$releases = 'https://github.com/protocolbuffers/protobuf/releases'
|
$releases = 'https://github.com/protocolbuffers/protobuf/releases'
|
||||||
if("$protobuf_tag" -eq "latest") {
|
if("$protobuf_tag" -eq "latest") {
|
||||||
$protobuf_tag = (Invoke-WebRequest -UseBasicParsing -Uri $releases/latest).BaseResponse.RequestMessage.RequestUri.Segments[-1]
|
$protobuf_tag = (Get-File -Url $releases/latest).BaseResponse.RequestMessage.RequestUri.Segments[-1]
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
$protobuf_tag = $protobuf_tag -replace '^v', ''
|
$protobuf_tag = $protobuf_tag -replace '^v', ''
|
||||||
@ -11,7 +11,7 @@ Function Get-ProtobufTag() {
|
|||||||
$response.Close()
|
$response.Close()
|
||||||
$protobuf_tag = "v$protobuf_tag"
|
$protobuf_tag = "v$protobuf_tag"
|
||||||
} catch {
|
} catch {
|
||||||
$protobuf_tag = (Invoke-WebRequest -UseBasicParsing -Uri $releases/latest).BaseResponse.RequestMessage.RequestUri.Segments[-1]
|
$protobuf_tag = (Get-File -Url $releases/latest).BaseResponse.RequestMessage.RequestUri.Segments[-1]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $protobuf_tag
|
return $protobuf_tag
|
||||||
@ -29,7 +29,7 @@ Function Add-Protoc() {
|
|||||||
$arch_num = '32'
|
$arch_num = '32'
|
||||||
}
|
}
|
||||||
$url = "https://github.com/protocolbuffers/protobuf/releases/download/$protobuf_tag/protoc-$($protobuf_tag -replace 'v', '')-win$arch_num.zip"
|
$url = "https://github.com/protocolbuffers/protobuf/releases/download/$protobuf_tag/protoc-$($protobuf_tag -replace 'v', '')-win$arch_num.zip"
|
||||||
Invoke-WebRequest -Uri $url -OutFile $bin_dir\protoc.zip >$null 2>&1
|
Get-File -Url $url -OutFile $bin_dir\protoc.zip >$null 2>&1
|
||||||
Expand-Archive -Path $bin_dir\protoc.zip -DestinationPath $bin_dir\protoc -Force >$null 2>&1
|
Expand-Archive -Path $bin_dir\protoc.zip -DestinationPath $bin_dir\protoc -Force >$null 2>&1
|
||||||
Move-Item -Path $bin_dir\protoc\bin\protoc.exe -Destination $bin_dir\protoc.exe
|
Move-Item -Path $bin_dir\protoc\bin\protoc.exe -Destination $bin_dir\protoc.exe
|
||||||
Add-ToProfile $current_profile 'protoc' "New-Alias protoc $bin_dir\protoc.exe"
|
Add-ToProfile $current_profile 'protoc' "New-Alias protoc $bin_dir\protoc.exe"
|
||||||
|
@ -4,7 +4,7 @@ Function Add-Symfony() {
|
|||||||
$arch_name = '386'
|
$arch_name = '386'
|
||||||
}
|
}
|
||||||
$url = "https://github.com/symfony-cli/symfony-cli/releases/latest/download/symfony-cli_windows_${arch_name}.zip"
|
$url = "https://github.com/symfony-cli/symfony-cli/releases/latest/download/symfony-cli_windows_${arch_name}.zip"
|
||||||
Invoke-WebRequest -Uri $url -OutFile $bin_dir\symfony.zip >$null 2>&1
|
Get-File -Url $url -OutFile $bin_dir\symfony.zip >$null 2>&1
|
||||||
Expand-Archive -Path $bin_dir\symfony.zip -DestinationPath $bin_dir -Force >$null 2>&1
|
Expand-Archive -Path $bin_dir\symfony.zip -DestinationPath $bin_dir -Force >$null 2>&1
|
||||||
if(Test-Path $bin_dir\symfony.exe) {
|
if(Test-Path $bin_dir\symfony.exe) {
|
||||||
Copy-Item -Path $bin_dir\symfony.exe -Destination $bin_dir\symfony-cli.exe > $null 2>&1
|
Copy-Item -Path $bin_dir\symfony.exe -Destination $bin_dir\symfony-cli.exe > $null 2>&1
|
||||||
|
@ -173,9 +173,10 @@ configure_php() {
|
|||||||
add_php_config
|
add_php_config
|
||||||
ini_config_dir="${src:?}"/configs/ini
|
ini_config_dir="${src:?}"/configs/ini
|
||||||
ini_config_files=("$ini_config_dir"/php.ini)
|
ini_config_files=("$ini_config_dir"/php.ini)
|
||||||
[[ "$version" =~ $jit_versions ]] && ini_config_files+=("$ini_config_dir"/jit.ini)
|
jit_config_files=("$ini_config_dir"/jit.ini)
|
||||||
[[ "$version" =~ $xdebug3_versions ]] && ini_config_files+=("$ini_config_dir"/xdebug.ini)
|
[[ "$version" =~ $xdebug3_versions ]] && ini_config_files+=("$ini_config_dir"/xdebug.ini)
|
||||||
cat "${ini_config_files[@]}" | sudo tee -a "${ini_file[@]:?}" >/dev/null 2>&1
|
cat "${ini_config_files[@]}" | sudo tee -a "${ini_file[@]:?}" >/dev/null 2>&1
|
||||||
|
[[ "$version" =~ $jit_versions ]] && cat "${jit_config_files[@]}" | sudo tee -a "${pecl_file:-${ini_file[@]}}" >/dev/null 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to get PHP version in semver format.
|
# Function to get PHP version in semver format.
|
||||||
|
@ -23,7 +23,7 @@ Function Add-Log($mark, $subject, $message) {
|
|||||||
} else {
|
} else {
|
||||||
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" $mark $subject $message
|
printf "\033[31;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" $mark $subject $message
|
||||||
if($env:fail_fast -eq 'true') {
|
if($env:fail_fast -eq 'true') {
|
||||||
exit 1;
|
Write-Error $message -ErrorAction Stop
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -128,13 +128,51 @@ Function Add-EnvPATH {
|
|||||||
$env_data | Add-Content -Path $env_file -Encoding utf8
|
$env_data | Add-Content -Path $env_file -Encoding utf8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Function to fetch a file from a URL.
|
||||||
|
Function Get-File {
|
||||||
|
param (
|
||||||
|
[string]$Url,
|
||||||
|
[string]$FallbackUrl,
|
||||||
|
[string]$OutFile,
|
||||||
|
[int]$Retries = 3,
|
||||||
|
[int]$TimeoutSec = 0
|
||||||
|
)
|
||||||
|
|
||||||
|
for ($i = 0; $i -lt $Retries; $i++) {
|
||||||
|
try {
|
||||||
|
if($null -ne $OutFile) {
|
||||||
|
Invoke-WebRequest -Uri $Url -OutFile $OutFile -TimeoutSec $TimeoutSec
|
||||||
|
} else {
|
||||||
|
Invoke-WebRequest -Uri $Url -TimeoutSec $TimeoutSec
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
} catch {
|
||||||
|
if ($i -eq ($Retries - 1)) {
|
||||||
|
if($FallbackUrl) {
|
||||||
|
try {
|
||||||
|
if($null -ne $OutFile) {
|
||||||
|
Invoke-WebRequest -Uri $FallbackUrl -OutFile $OutFile -TimeoutSec $TimeoutSec
|
||||||
|
} else {
|
||||||
|
Invoke-WebRequest -Uri $FallbackUrl -TimeoutSec $TimeoutSec
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
throw "Failed to download the assets from $Url and $FallbackUrl"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw "Failed to download the assets from $Url"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# Function to make sure printf is in PATH.
|
# Function to make sure printf is in PATH.
|
||||||
Function Add-Printf {
|
Function Add-Printf {
|
||||||
if (-not(Test-Path "C:\Program Files\Git\usr\bin\printf.exe")) {
|
if (-not(Test-Path "C:\Program Files\Git\usr\bin\printf.exe")) {
|
||||||
if(Test-Path "C:\msys64\usr\bin\printf.exe") {
|
if(Test-Path "C:\msys64\usr\bin\printf.exe") {
|
||||||
New-Item -Path $bin_dir\printf.exe -ItemType SymbolicLink -Value C:\msys64\usr\bin\printf.exe -Force > $null 2>&1
|
New-Item -Path $bin_dir\printf.exe -ItemType SymbolicLink -Value C:\msys64\usr\bin\printf.exe -Force > $null 2>&1
|
||||||
} else {
|
} else {
|
||||||
Invoke-WebRequest -Uri "$github/shivammathur/printf/releases/latest/download/printf-x64.zip" -OutFile "$bin_dir\printf.zip"
|
Get-File -Url "$github/shivammathur/printf/releases/latest/download/printf-x64.zip" -OutFile "$bin_dir\printf.zip"
|
||||||
Expand-Archive -Path $bin_dir\printf.zip -DestinationPath $bin_dir -Force
|
Expand-Archive -Path $bin_dir\printf.zip -DestinationPath $bin_dir -Force
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -166,7 +204,7 @@ Function Install-PSPackage() {
|
|||||||
$module_path = "$bin_dir\$psm1_path.psm1"
|
$module_path = "$bin_dir\$psm1_path.psm1"
|
||||||
if(-not (Test-Path $module_path -PathType Leaf)) {
|
if(-not (Test-Path $module_path -PathType Leaf)) {
|
||||||
$zip_file = "$bin_dir\$package.zip"
|
$zip_file = "$bin_dir\$package.zip"
|
||||||
Invoke-WebRequest -Uri $url -OutFile $zip_file
|
Get-File -Url $url -OutFile $zip_file
|
||||||
Expand-Archive -Path $zip_file -DestinationPath $bin_dir -Force
|
Expand-Archive -Path $zip_file -DestinationPath $bin_dir -Force
|
||||||
}
|
}
|
||||||
Import-Module $module_path
|
Import-Module $module_path
|
||||||
@ -224,40 +262,49 @@ Function Set-PhpCache {
|
|||||||
if($_.name -match "php-$version.[0-9]+$env:PHPTS-Win32-.*-$arch.zip") {
|
if($_.name -match "php-$version.[0-9]+$env:PHPTS-Win32-.*-$arch.zip") {
|
||||||
return $_.name
|
return $_.name
|
||||||
}
|
}
|
||||||
}
|
} | Select-Object -Last 1
|
||||||
if($null -eq $asset) {
|
if($null -eq $asset) {
|
||||||
throw "Asset not found"
|
throw "Asset not found"
|
||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
$release = Invoke-WebRequest $php_builder/releases/expanded_assets/php$version
|
$release = Get-File -Url $php_builder/releases/expanded_assets/php$version
|
||||||
$asset = $release.links.href | ForEach-Object {
|
$asset = $release.links.href | ForEach-Object {
|
||||||
if($_ -match "php-$version.[0-9]+$env:PHPTS-Win32-.*-$arch.zip") {
|
if($_ -match "php-$version.[0-9]+$env:PHPTS-Win32-.*-$arch.zip") {
|
||||||
return $_.split('/')[-1]
|
return $_.split('/')[-1]
|
||||||
}
|
}
|
||||||
|
} | Select-Object -Last 1
|
||||||
}
|
}
|
||||||
}
|
Get-File -Url $php_builder/releases/download/php$version/$asset -OutFile $php_dir\$asset
|
||||||
Invoke-WebRequest -UseBasicParsing -Uri $php_builder/releases/download/php$version/$asset -OutFile $php_dir\$asset
|
|
||||||
Set-PhpDownloadCache -Path $php_dir CurrentUser
|
Set-PhpDownloadCache -Path $php_dir CurrentUser
|
||||||
} catch { }
|
} catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to add debug symbols to PHP.
|
# Function to add debug symbols to PHP.
|
||||||
Function Add-DebugSymbols {
|
Function Add-DebugSymbols {
|
||||||
$release = Invoke-RestMethod https://api.github.com/repos/shivammathur/php-builder-windows/releases/tags/php$version
|
|
||||||
$dev = if ($version -match $nightly_versions) { '-dev' } else { '' }
|
$dev = if ($version -match $nightly_versions) { '-dev' } else { '' }
|
||||||
|
try {
|
||||||
|
$release = Invoke-RestMethod https://api.github.com/repos/shivammathur/php-builder-windows/releases/tags/php$version
|
||||||
$asset = $release.assets | ForEach-Object {
|
$asset = $release.assets | ForEach-Object {
|
||||||
if($_.name -match "php-debug-pack-$version.[0-9]+$dev$env:PHPTS-Win32-.*-$arch.zip") {
|
if($_.name -match "php-debug-pack-$version.[0-9]+$dev$env:PHPTS-Win32-.*-$arch.zip") {
|
||||||
return $_.name
|
return $_.name
|
||||||
}
|
}
|
||||||
|
} | Select-Object -Last 1
|
||||||
|
} catch {
|
||||||
|
$release = Get-File -Url $php_builder/releases/expanded_assets/php$version
|
||||||
|
$asset = $release.links.href | ForEach-Object {
|
||||||
|
if($_ -match "php-debug-pack-$version.[0-9]+$dev$env:PHPTS-Win32-.*-$arch.zip") {
|
||||||
|
return $_.split('/')[-1]
|
||||||
}
|
}
|
||||||
Invoke-WebRequest -UseBasicParsing -Uri $php_builder/releases/download/php$version/$asset -OutFile $php_dir\$asset
|
} | Select-Object -Last 1
|
||||||
|
}
|
||||||
|
Get-File -Url $php_builder/releases/download/php$version/$asset -OutFile $php_dir\$asset
|
||||||
Expand-Archive -Path $php_dir\$asset -DestinationPath $php_dir -Force
|
Expand-Archive -Path $php_dir\$asset -DestinationPath $php_dir -Force
|
||||||
Get-ChildItem -Path $php_dir -Filter php_*.pdb | Move-Item -Destination $ext_dir
|
Get-ChildItem -Path $php_dir -Filter php_*.pdb | Move-Item -Destination $ext_dir
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to install nightly version of PHP
|
# Function to install nightly version of PHP
|
||||||
Function Install-PhpNightly {
|
Function Install-PhpNightly {
|
||||||
Invoke-WebRequest -UseBasicParsing -Uri $php_builder/releases/latest/download/Get-PhpNightly.ps1 -OutFile $php_dir\Get-PhpNightly.ps1 > $null 2>&1
|
Get-File -Url $php_builder/releases/latest/download/Get-PhpNightly.ps1 -FallbackUrl https://dl.cloudsmith.io/public/shivammathur/php-builder-windows/raw/files/Get-PhpNightly.ps1 -OutFile $php_dir\Get-PhpNightly.ps1 > $null 2>&1
|
||||||
& $php_dir\Get-PhpNightly.ps1 -Architecture $arch -ThreadSafe $ts -Path $php_dir -Version $version > $null 2>&1
|
& $php_dir\Get-PhpNightly.ps1 -Architecture $arch -ThreadSafe $ts -Path $php_dir -Version $version > $null 2>&1
|
||||||
if(Test-Path $php_dir\COMMIT) {
|
if(Test-Path $php_dir\COMMIT) {
|
||||||
return " ($( Get-Content $php_dir\COMMIT ))"
|
return " ($( Get-Content $php_dir\COMMIT ))"
|
||||||
@ -303,7 +350,7 @@ if ( $env:GITHUB_ACTIONS -eq 'true') {
|
|||||||
if(-not($env:ImageOS) -and -not($env:ImageVersion)) {
|
if(-not($env:ImageOS) -and -not($env:ImageVersion)) {
|
||||||
if($env:RUNNER -eq 'github') {
|
if($env:RUNNER -eq 'github') {
|
||||||
Add-Log $cross "Runner" "Runner set as github in self-hosted environment"
|
Add-Log $cross "Runner" "Runner set as github in self-hosted environment"
|
||||||
exit 1
|
Write-Error "Runner set as github in self-hosted environment" -ErrorAction Stop
|
||||||
}
|
}
|
||||||
$bin_dir = 'C:\tools\bin'
|
$bin_dir = 'C:\tools\bin'
|
||||||
$php_dir = "$php_dir$version"
|
$php_dir = "$php_dir$version"
|
||||||
@ -314,7 +361,7 @@ if(-not($env:ImageOS) -and -not($env:ImageVersion)) {
|
|||||||
if($version -lt 5.6) {
|
if($version -lt 5.6) {
|
||||||
Add-Log $cross "PHP" "PHP $version is not supported on self-hosted runner"
|
Add-Log $cross "PHP" "PHP $version is not supported on self-hosted runner"
|
||||||
Start-Sleep 1
|
Start-Sleep 1
|
||||||
exit 1
|
Write-Error "PHP $version is not supported on self-hosted runner" -ErrorAction Stop
|
||||||
}
|
}
|
||||||
if ($null -eq (Get-Module -ListAvailable -Name VcRedist)) {
|
if ($null -eq (Get-Module -ListAvailable -Name VcRedist)) {
|
||||||
Install-Module -Name VcRedist -Force
|
Install-Module -Name VcRedist -Force
|
||||||
@ -384,10 +431,10 @@ if($env:DEBUG -eq 'true') {
|
|||||||
$installed = Get-Php -Path $php_dir
|
$installed = Get-Php -Path $php_dir
|
||||||
if($installed.MajorMinorVersion -ne $version) {
|
if($installed.MajorMinorVersion -ne $version) {
|
||||||
Add-Log $cross "PHP" "Could not setup PHP $version"
|
Add-Log $cross "PHP" "Could not setup PHP $version"
|
||||||
exit 1
|
Write-Error "Could not setup PHP $version" -ErrorAction Stop
|
||||||
}
|
}
|
||||||
if($version -lt "5.5") {
|
if($version -lt "5.5") {
|
||||||
('libeay32.dll', 'ssleay32.dll') | ForEach-Object -Parallel { Invoke-WebRequest -Uri "$using:php_builder/releases/download/openssl-1.0.2u/$_" -OutFile $using:php_dir\$_ >$null 2>&1 }
|
('libeay32.dll', 'ssleay32.dll') | ForEach-Object -Parallel { Get-File -Url "$using:php_builder/releases/download/openssl-1.0.2u/$_" -OutFile $using:php_dir\$_ >$null 2>&1 }
|
||||||
} else {
|
} else {
|
||||||
$enable_extensions += ('opcache')
|
$enable_extensions += ('opcache')
|
||||||
}
|
}
|
||||||
|
28
src/utils.ts
28
src/utils.ts
@ -1,3 +1,4 @@
|
|||||||
|
import fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import * as fetch from './fetch';
|
import * as fetch from './fetch';
|
||||||
@ -44,8 +45,8 @@ export async function getInput(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Function to get manifest URL
|
/**
|
||||||
*
|
* Function to get manifest URL
|
||||||
*/
|
*/
|
||||||
export async function getManifestURL(): Promise<string> {
|
export async function getManifestURL(): Promise<string> {
|
||||||
return 'https://raw.githubusercontent.com/shivammathur/setup-php/develop/src/configs/php-versions.json';
|
return 'https://raw.githubusercontent.com/shivammathur/setup-php/develop/src/configs/php-versions.json';
|
||||||
@ -57,10 +58,11 @@ export async function getManifestURL(): Promise<string> {
|
|||||||
* @param version
|
* @param version
|
||||||
*/
|
*/
|
||||||
export async function parseVersion(version: string): Promise<string> {
|
export async function parseVersion(version: string): Promise<string> {
|
||||||
const manifest = await getManifestURL();
|
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case /^(latest|nightly|\d+\.x)$/.test(version):
|
case /^(latest|nightly|\d+\.x)$/.test(version):
|
||||||
return JSON.parse((await fetch.fetch(manifest))['data'])[version];
|
return JSON.parse((await fetch.fetch(await getManifestURL()))['data'])[
|
||||||
|
version
|
||||||
|
];
|
||||||
default:
|
default:
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case version.length > 1:
|
case version.length > 1:
|
||||||
@ -422,6 +424,24 @@ export async function parseExtensionSource(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read php version from input or file
|
||||||
|
*/
|
||||||
|
export async function readPHPVersion(): Promise<string> {
|
||||||
|
const version = await getInput('php-version', false);
|
||||||
|
if (version) {
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
const versionFile =
|
||||||
|
(await getInput('php-version-file', false)) || '.php-version';
|
||||||
|
if (fs.existsSync(versionFile)) {
|
||||||
|
return fs.readFileSync(versionFile, 'utf8').replace(/[\r\n]/g, '');
|
||||||
|
} else if (versionFile !== '.php-version') {
|
||||||
|
throw new Error(`Could not find '${versionFile}' file.`);
|
||||||
|
}
|
||||||
|
return 'latest';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Log to console
|
* Log to console
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user