From c6ad3d1a70e50a3ebafc52827c927bab95bdfdcc Mon Sep 17 00:00:00 2001 From: Shivam Mathur Date: Wed, 18 Dec 2019 21:44:02 +0530 Subject: [PATCH] Add 8.0 support on windows --- .github/workflows/experimental-workflow.yml | 11 ++++-- README.md | 40 ++++++++++++++++---- dist/index.js | 2 +- src/ext/php_pcov.dll | Bin 27136 -> 31744 bytes src/install.ts | 4 +- src/scripts/win32.ps1 | 19 +++++++--- 6 files changed, 56 insertions(+), 20 deletions(-) diff --git a/.github/workflows/experimental-workflow.yml b/.github/workflows/experimental-workflow.yml index 500e5b0e..6c867953 100644 --- a/.github/workflows/experimental-workflow.yml +++ b/.github/workflows/experimental-workflow.yml @@ -25,7 +25,7 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ubuntu-latest, ubuntu-16.04, macOS-latest] + operating-system: [ubuntu-latest, windows-latest, macOS-latest] php-versions: ['8.0'] steps: - name: Checkout @@ -59,7 +59,7 @@ jobs: run: node dist/index.js env: php-version: ${{ matrix.php-versions }} - extensions: mbstring, xdebug, pcov #optional + extensions: mbstring, opcache, xdebug, pcov #optional ini-values: post_max_size=256M, short_open_tag=On, date.timezone=Asia/Kolkata #optional coverage: xdebug @@ -83,10 +83,13 @@ jobs: php -r "if(ini_get('post_max_size')!='256M') {throw new Exception('post_max_size not added');}" php -r "if(ini_get('short_open_tag')!=1) {throw new Exception('short_open_tag not added');}" php -r "if(ini_get('date.timezone')!='Asia/Kolkata') {throw new Exception('date.timezone not added');}" - - name: Test and Benchmark JIT + - name: Test JIT run: | php -r "if(! extension_loaded('Zend OPcache')) {throw new Exception('Zend OPcache not found');}" php -r "if(ini_get('opcache.jit_buffer_size')!='256M') {throw new Exception('opcache.jit_buffer_size not set');}" php -r "if(ini_get('opcache.jit')!=1235) {throw new Exception('opcache.jit not set');}" php -r "if(ini_get('pcre.jit')!=1) {throw new Exception('pcre.jit not set');}" - curl https://raw.githubusercontent.com/php/php-src/master/Zend/bench.php | php \ No newline at end of file + - name: Benchmark JIT + run: | + curl -o bench.php https://raw.githubusercontent.com/php/php-src/master/Zend/bench.php + php bench.php \ No newline at end of file diff --git a/README.md b/README.md index ca7ff3b3..b19670d7 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,9 @@ Setup PHP with required extensions, php.ini configuration, code-coverage support - [PCOV](#pcov) - [Disable coverage](#disable-coverage) - [Usage](#memo-usage) - - [Basic Usage](#basic-usage) - - [Matrix Testing](#matrix-testing) + - [Basic Setup](#basic-setup) + - [Matrix Setup](#matrix-setup) + - [Experimental Setup](#experimental-setup) - [Cache dependencies](#cache-dependencies) - [Examples](#examples) - [License](#scroll-license) @@ -47,7 +48,7 @@ Setup PHP with required extensions, php.ini configuration, code-coverage support |7.4|`Stable`|`Active`| |8.0|`Experimental`|`In development`| -**Note:** Specifying `8.0` in `php-version` input installs `PHP 8.0.0-dev`. This is an experimental feature on this action available on `ubuntu` and `macOS`. Currently some extensions might not be available for this version. +**Note:** Specifying `8.0` in `php-version` input installs a nightly build of `PHP 8.0.0-dev` with `PHP JIT` support. See [experimental setup](#experimental-setup) for more information. ## :cloud: OS/Platform Support @@ -70,7 +71,7 @@ Setup PHP with required extensions, php.ini configuration, code-coverage support ### Xdebug Specify `coverage: xdebug` to use `Xdebug`. -Runs on all [PHP versions supported](#tada-php-support "List of PHP versions supported on this GitHub Action") +Runs on all [PHP versions supported](#tada-php-support "List of PHP versions supported on this GitHub Action") except `8.0`. ```yaml uses: shivammathur/setup-php@v1 @@ -123,9 +124,9 @@ Inputs supported by this GitHub Action. See [action.yml](action.yml "Metadata for this GitHub Action") and usage below for more info. -### Basic Usage +### Basic Setup -> Setup a particular PHP version +> Setup a particular PHP version. ```yaml steps: @@ -142,9 +143,9 @@ steps: pecl: false #optional, setup PECL ``` -### Matrix Testing +### Matrix Setup -> Setup multiple PHP versions +> Setup multiple PHP versions on multiple operating systems. ```yaml jobs: @@ -169,6 +170,29 @@ jobs: pecl: false #optional, setup PECL ``` +### Experimental Setup + +> Setup a nightly build of `PHP 8.0.0-dev` from the [master branch](https://github.com/php/php-src/tree/master "Master branch on PHP source repository") of PHP. + +- This version is currently in development and is an experimental feature on this action. +- `PECL` is installed by default with this version on `ubuntu`. +- Some extensions might not support this version currently. +- Refer to this [RFC](https://wiki.php.net/rfc/jit "PHP JIT RFC configuration") for configuring `PHP JIT` on this version. + +```yaml +steps: +- name: Checkout + uses: actions/checkout@v1 + +- name: Setup PHP + uses: shivammathur/setup-php@v1 + with: + php-version: '8.0' + extensions: mbstring #optional, setup extensions + ini-values: opcache.jit_buffer_size=256M, opcache.jit=1235, pcre.jit=1 #optional, setup php.ini configuration + coverage: pcov #optional, setup PCOV, Xdebug does not support this version yet. +``` + ### Cache dependencies You can persist composer's internal cache directory using the [`action/cache`](https://github.com/actions/cache "GitHub Action to cache files") GitHub Action. Dependencies cached are loaded directly instead of downloading them while installation. The files cached are available across check-runs and will reduce the workflow execution time. diff --git a/dist/index.js b/dist/index.js index 2deebbb8..97611682 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1848,7 +1848,7 @@ function run() { } case 'win32': script_path = yield build('win32.ps1', version, os_version); - yield exec_1.exec('pwsh ' + script_path + ' -version ' + version); + yield exec_1.exec('pwsh ' + script_path + ' -version ' + version + ' -dir ' + __dirname); break; } } diff --git a/src/ext/php_pcov.dll b/src/ext/php_pcov.dll index a63db08da2df863695aef0bc9115ab773a2f969a..f6becd738a53f397678bcdcad39ca238fef2198b 100644 GIT binary patch literal 31744 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

`y8>^x_^csKfnG;- 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 diff --git a/src/install.ts b/src/install.ts index 2070ee2f..e3d93327 100644 --- a/src/install.ts +++ b/src/install.ts @@ -63,7 +63,9 @@ export async function run(): Promise { } case 'win32': script_path = await build('win32.ps1', version, os_version); - await exec('pwsh ' + script_path + ' -version ' + version); + await exec( + 'pwsh ' + script_path + ' -version ' + version + ' -dir ' + __dirname + ); break; } } catch (error) { diff --git a/src/scripts/win32.ps1 b/src/scripts/win32.ps1 index d4e34ac7..7193d900 100644 --- a/src/scripts/win32.ps1 +++ b/src/scripts/win32.ps1 @@ -1,11 +1,14 @@ param ( - [Parameter(Mandatory = $true)][string]$version = "7.3" + [Parameter(Mandatory = $true)][string]$version = "7.4", + [Parameter(Mandatory=$true)][string]$dir ) $tick = ([char]8730) $cross = ([char]10007) $php_dir = 'C:\tools\php' +$ext_dir = $php_dir + '\ext' $ProgressPreference = 'SilentlyContinue' +$master_version = '8.0' Function Step-Log($message) { printf "\n\033[90;1m==> \033[0m\033[37;1m%s \033[0m\n" $message @@ -16,10 +19,6 @@ Function Add-Log($mark, $subject, $message) { printf "\033[%s;1m%s \033[0m\033[34;1m%s \033[0m\033[90;1m%s \033[0m\n" $code $mark $subject $message } -if ($version -eq '8.0') { - $version = '7.4' -} - Step-Log "Setup PhpManager" Install-Module -Name PhpManager -Force -Scope CurrentUser Add-Log $tick "PhpManager" "Installed" @@ -39,6 +38,9 @@ if ($null -eq $installed -or -not("$($installed.Version).".StartsWith(($version Install-Module -Name VcRedist -Force $arch='x86' } + if ($version -eq $master_version) { + $version = 'master' + } Install-Php -Version $version -Architecture $arch -ThreadSafe $true -InstallVC -Path $php_dir -TimeZone UTC -InitialPhpIni Production -Force >$null 2>&1 $installed = Get-Php -Path $php_dir @@ -49,12 +51,17 @@ else { } Set-PhpIniKey -Key 'date.timezone' -Value 'UTC' -Path $php_dir -Enable-PhpExtension -Extension openssl, curl -Path $php_dir +Enable-PhpExtension -Extension openssl, curl, opcache -Path $php_dir Update-PhpCAInfo -Path $php_dir -Source CurrentUser Add-Log $tick "PHP" $status Install-Composer -Scope System -Path $php_dir -PhpPath $php_dir Add-Log $tick "Composer" "Installed" +if ($version -eq 'master') { + Copy-Item $dir"\..\src\ext\php_pcov.dll" -Destination $ext_dir"\php_pcov.dll" + Set-PhpIniKey -Key 'opcache.jit_buffer_size' -Value '256M' -Path $php_dir + Set-PhpIniKey -Key 'opcache.jit' -Value '1235' -Path $php_dir +} Function Add-Extension { Param (