1
0
mirror of https://github.com/php/pie.git synced 2026-03-23 23:12:17 +01:00

435: documentation improvements for 1.4.0 features

This commit is contained in:
James Titcumb
2026-03-06 09:23:36 +00:00
parent 3fb0c2443b
commit e7053cb3e6
3 changed files with 94 additions and 18 deletions

View File

@@ -345,11 +345,16 @@ The list of accepted OS families: "windows", "bsd", "darwin", "solaris", "linux"
#### Extension dependencies
Extension authors may define some dependencies in `require`, but practically,
Extension authors may define some dependencies in `require`, but typically,
most extensions would not need to define dependencies, except for the PHP
versions supported by the extension. Dependencies on other extensions may be
defined, for example `ext-json`. However, dependencies on a regular PHP package
(such as `monolog/monolog`) SHOULD NOT be specified in your `require` section.
versions supported by the extension, and system libraries.
Dependencies on a regular PHP package (such as `monolog/monolog`) SHOULD NOT be
specified in your extension's `require` section.
##### Dependencies on other extensions
Dependencies on other extensions may be defined, for example `ext-json`.
It is worth noting that if your extension does define a dependency on another
dependency, and this is not available, someone installing your extension would
@@ -360,6 +365,47 @@ Cannot use myvendor/myextension's latest version 1.2.3 as it requires
ext-something * which is missing from your platform.
```
##### System Library Dependencies
In PIE 1.4.0, the ability for extension authors to define system library
dependencies was added, and in some cases, automatically install them.
The following libraries are supported at the moment. **If you would like to add
a library, please [open a discussion](https://github.com/php/pie/discussions)
in the first instance.** Don't just open a PR without discussing first please!
We are adding libraries and improving this feature over time. If the automatic
install of a system dependency that is supported below in your package manager
is NOT working, then please [report a bug](https://github.com/php/pie/issues).
| Library | Checked by PIE | Auto-installs in |
|---------------|----------------|--------------------|
| lib-curl | ✅ | apt, apk, dnf, yum |
| lib-enchant | ✅ | ❌ |
| lib-enchant-2 | ✅ | ❌ |
| lib-sodium | ✅ | apt, apk, dnf, yum |
| lib-ffi | ✅ | apt, apk, dnf, yum |
| lib-xslt | ✅ | apt, apk, dnf, yum |
| lib-zip | ✅ | apt, apk, dnf, yum |
| lib-png | ✅ | ❌ |
| lib-avif | ✅ | ❌ |
| lib-webp | ✅ | ❌ |
| lib-jpeg | ✅ | apt, apk, dnf, yum |
| lib-xpm | ✅ | ❌ |
| lib-freetype2 | ✅ | ❌ |
| lib-gdlib | ✅ | ❌ |
| lib-gmp | ✅ | ❌ |
| lib-sasl | ✅ | ❌ |
| lib-onig | ✅ | ❌ |
| lib-odbc | ✅ | ❌ |
| lib-capstone | ✅ | ❌ |
| lib-pcre | ✅ | ❌ |
| lib-edit | ✅ | ❌ |
| lib-snmp | ✅ | ❌ |
| lib-argon2 | ✅ | ❌ |
| lib-uriparser | ✅ | ❌ |
| lib-exslt | ✅ | ❌ |
#### Checking the extension will work
First up, you can use `composer validate` to check your `composer.json` is

View File

@@ -281,6 +281,31 @@ pie install example/some-extension --with-some-library-name=/path/to/the/lib
pie install example/some-extension --with-some-library-name=/path/to/the/lib --enable-some-functionality
```
### Build tools check
PIE will attempt to check the presence of build tools (such as gcc, make, etc.)
before running. If any are missing, an interactive prompt will ask if you would
like to install the missing tools. If you are running in non-interactive mode
(for example, in a CI pipeline, container build, etc), PIE will **not**
install these tools automatically. If you would like to install the build tools
in a non-interactive terminal, pass the `--auto-install-build-tools` and the
prompt will be skipped.
To skip the build tools check entirely, pass the `--no-build-tools-check` flag.
### System library dependencies check
PIE will attempt to check the presence of system library dependencies before
installing an extension. If any are missing, an interactive prompt will ask if
you would like to install the missing tools. If you are running in
non-interactive mode (for example, in a CI pipeline, container build, etc), PIE
will **not** install these dependencies automatically. If you would like to
install the system dependencies in a non-interactive terminal, pass the
`--auto-install-system-dependencies` and the prompt will be skipped.
To skip the dependencies check entirely, pass the
`--no-system-dependencies-check` flag.
### Configuring the INI file
PIE will automatically try to enable the extension by adding `extension=...` or