Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/php/setup-php-sdk
Setup Windows build environment for PHP extensions
https://github.com/php/setup-php-sdk
Last synced: about 1 month ago
JSON representation
Setup Windows build environment for PHP extensions
- Host: GitHub
- URL: https://github.com/php/setup-php-sdk
- Owner: php
- License: mit
- Created: 2023-11-29T09:05:28.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2023-11-29T21:32:54.000Z (12 months ago)
- Last Synced: 2024-04-14T05:35:08.645Z (7 months ago)
- Language: PowerShell
- Size: 20.5 KB
- Stars: 6
- Watchers: 15
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Setup PHP-SDK Action
[Github Action](https://github.com/features/actions) to set up an environment
for building and testing PHP extensions on Windows.## Example Usage
````.yml
- id: setup-php-sdk
uses: php/[email protected]
with:
version: 8.0
arch: x64
ts: nts
- uses: ilammy/msvc-dev-cmd@v1
with:
arch: x64
toolset: ${{steps.setup-php-sdk.outputs.toolset}}
- run: phpize
- run: configure --enable-dbase --with-prefix=${{steps.setup-php-sdk.outputs.prefix}}
- run: nmake
- run: nmake test TESTS=tests
````## Inputs
- `version`: the PHP version to build for
(`7.0`, `7.1`, `7.2`, `7.3`, `7.4`, `8.0`, `8.1`, `8.2`, `8.3`, or `8.4`)
- `arch`: the architecture to build for (`x64` or `x86`)
- `ts`: thread-safety (`nts` or `ts`)
- `deps`: dependency libraries to install; for now, only
[core dependencies](https://windows.php.net/downloads/php-sdk/deps/) are availableNote that for PHP versions 7.4 and below, `runs-on: windows-2022` will not work
as the correct toolset is not available. For these versions, you should use
`runs-on: windows-2019`. For example:```yml
strategy:
matrix:
os: [ windows-2019, windows-2022 ]
php: [ "8.1", "8.0", "7.4", "7.3", "7.2", "7.1" ]
arch: [ x64, x86 ]
ts: [ ts, nts ]
exclude:
- { os: windows-2019, php: "8.1" }
- { os: windows-2019, php: "8.0" }
- { os: windows-2022, php: "7.4" }
- { os: windows-2022, php: "7.3" }
- { os: windows-2022, php: "7.2" }
- { os: windows-2022, php: "7.1" }
```Currently, `windows-2019` may be used for all PHP versions, although this may
change in future releases.### Manually Installing Toolsets
It is possible to manually install older toolsets on `windows-2022` using an
approach suggested in [actions/runner-images#9701](https://github.com/actions/runner-images/issues/9701).
The following example installs VC15 by its
[Component ID](https://learn.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2022)
to allow building PHP 7.2, 7.3, and 7.4 on a `windows-2022` image:```yml
run:
steps:
- name: Install VC15 component
if: ${{ matrix.php == '7.4' || matrix.php == '7.3' || matrix.php == '7.2' }}
shell: pwsh
run: |
Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\"
$installPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
$component = "Microsoft.VisualStudio.Component.VC.v141.x86.x64"
$args = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$installPath`"", '--add', $component, '--quiet', '--norestart', '--nocache')
$process = Start-Process -FilePath cmd.exe -ArgumentList $args -Wait -PassThru -WindowStyle Hidden
```This step should be executed _before_ invoking the `setup-php-sdk` action.
## Outputs
- `toolset`: the required toolset version;
needs to be passed to the ilammy/msvc-dev-cmd action
- `prefix`: the prefix of the PHP installation;
needs to be passed to configure
- `vs`: the Visual Studio version