From eefa0122043a54508630cd13b0addb477b8c6ac8 Mon Sep 17 00:00:00 2001 From: Alexandre Daubois <2144837+alexandre-daubois@users.noreply.github.com> Date: Mon, 9 Dec 2024 14:37:10 +0100 Subject: [PATCH] Add OS families to `php-ext` config options for PIE (#12218) --- res/composer-schema.json | 29 ++++++++++++++++++++++- src/Composer/Package/PackageInterface.php | 2 +- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/res/composer-schema.json b/res/composer-schema.json index 9df390e06..efe7a5e59 100644 --- a/res/composer-schema.json +++ b/res/composer-schema.json @@ -323,6 +323,26 @@ "example": "my-extension-source", "default": null }, + "os-families": { + "type": "array", + "minItems": 1, + "description": "An array of OS families to mark as compatible with the extension. Specifying this property will mean this package is not installable with PIE on any OS family not listed here. Must not be specified alongside os-families-exclude.", + "items": { + "type": "string", + "enum": ["windows", "bsd", "darwin", "solaris", "linux", "unknown"], + "description": "The name of the OS family to mark as compatible." + } + }, + "os-families-exclude": { + "type": "array", + "minItems": 1, + "description": "An array of OS families to mark as incompatible with the extension. Specifying this property will mean this package is installable on any OS family except those listed here. Must not be specified alongside os-families.", + "items": { + "type": "string", + "enum": ["windows", "bsd", "darwin", "solaris", "linux", "unknown"], + "description": "The name of the OS family to exclude." + } + }, "configure-options": { "type": "array", "description": "These configure options make up the flags that can be passed to ./configure when installing the extension.", @@ -350,7 +370,14 @@ } } } - } + }, + "allOf": [ + { + "not": { + "required": ["os-families", "os-families-exclude"] + } + } + ] }, "config": { "type": "object", diff --git a/src/Composer/Package/PackageInterface.php b/src/Composer/Package/PackageInterface.php index dec040334..d3849781a 100644 --- a/src/Composer/Package/PackageInterface.php +++ b/src/Composer/Package/PackageInterface.php @@ -23,7 +23,7 @@ use Composer\Repository\RepositoryInterface; * * @phpstan-type AutoloadRules array{psr-0?: array, psr-4?: array, classmap?: list, files?: list, exclude-from-classmap?: list} * @phpstan-type DevAutoloadRules array{psr-0?: array, psr-4?: array, classmap?: list, files?: list} - * @phpstan-type PhpExtConfig array{extension-name?: string, priority?: int, support-zts?: bool, support-nts?: bool, build-path?: string|null, configure-options?: list} + * @phpstan-type PhpExtConfig array{extension-name?: string, priority?: int, support-zts?: bool, support-nts?: bool, build-path?: string|null, os-families?: non-empty-list, os-families-exclude?: non-empty-list, configure-options?: list} */ interface PackageInterface {