From d6a347c183a382d8dd6b6ba99d7e74699e170f66 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Nahan <814683+macintoshplus@users.noreply.github.com> Date: Thu, 20 Nov 2025 09:33:50 +0100 Subject: [PATCH 1/2] Document OS compatibility restrictions for extensions Added guidelines for 'os-families' and 'os-families-exclude' directives to restrict OS compatibility for extensions. --- docs/extension-maintainers.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/extension-maintainers.md b/docs/extension-maintainers.md index 6837649b..0558ec44 100644 --- a/docs/extension-maintainers.md +++ b/docs/extension-maintainers.md @@ -241,6 +241,22 @@ change the behaviour of downloading the source package. * `{ExtensionName}-{Version}.tgz` (this is intended for backwards compatibility with PECL packages) +##### `os-families` restrictions + +The `os-families` and `os-families-exclude` directive allow extention maintainers +to restrict the Operating System compatibility. + + * `os-families` An array of OS families to mark as compatible with the extension. + (e.g. `"os-families": ["windows"]` for an extension only available on Windows) + * `os-families-exclude` An array of OS families to mark as incompatible with the + extension. (e.g. `"os-families-exclude": ["windows"]` for an extension cannot + be installed available on Windows) + +The list of accepted OS families: "windows", "bsd", "darwin", "solaris", "linux", +"unknown" + +> Note: only once of `os-families` and `os-families-exclude` can be defined. + #### Extension dependencies Extension authors may define some dependencies in `require`, but practically, From 863a7b823f2e0cdfd02345d764254be6ee7b56c3 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Nahan <814683+macintoshplus@users.noreply.github.com> Date: Thu, 20 Nov 2025 13:40:29 +0100 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: James Titcumb --- docs/extension-maintainers.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/extension-maintainers.md b/docs/extension-maintainers.md index 0558ec44..8d279c63 100644 --- a/docs/extension-maintainers.md +++ b/docs/extension-maintainers.md @@ -249,13 +249,14 @@ to restrict the Operating System compatibility. * `os-families` An array of OS families to mark as compatible with the extension. (e.g. `"os-families": ["windows"]` for an extension only available on Windows) * `os-families-exclude` An array of OS families to mark as incompatible with the - extension. (e.g. `"os-families-exclude": ["windows"]` for an extension cannot - be installed available on Windows) + extension. (e.g. `"os-families-exclude": ["windows"]` for an extension that + cannot be installed available on Windows) The list of accepted OS families: "windows", "bsd", "darwin", "solaris", "linux", "unknown" -> Note: only once of `os-families` and `os-families-exclude` can be defined. +> [!WARNING] +> Only one of `os-families` and `os-families-exclude` can be defined. #### Extension dependencies