From 1d220e552bdb3d95b3e56e42bce5acc3b6f9f862 Mon Sep 17 00:00:00 2001 From: agj Date: Sun, 9 Feb 2025 16:59:39 -0300 Subject: [PATCH] php7[01234].extension.decimal: Override decimal to allow use in PHP 7 Depends on the JSON extension, which was included in PHP starting from version 8, so it's added when building for PHP 7. See: https://www.php.net/manual/en/json.installation.php Co-authored-by: agj --- .github/workflows/build.yaml | 4 ++++ checks.nix | 6 ++++++ pkgs/package-overrides.nix | 16 ++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index c166aee..b69a3a9 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -98,6 +98,10 @@ jobs: - name: Build Tidy extension run: nix-build -A outputs.checks.${{ matrix.archs.arch }}.${{ steps.params.outputs.attr }}-tidy + - name: Build Decimal extension + if: ${{ steps.params.outputs.major >= 7 }} + run: nix-build -A outputs.checks.${{ matrix.archs.arch }}.${{ steps.params.outputs.attr }}-decimal + - name: Check that composer PHAR works run: nix-build -A outputs.checks.${{ matrix.archs.arch }}.${{ steps.params.outputs.attr }}-composer-phar diff --git a/checks.nix b/checks.nix index c9d4751..213cc54 100644 --- a/checks.nix +++ b/checks.nix @@ -53,6 +53,12 @@ let drv = { php, ... }: php.extensions.tidy; }; + decimal = { + description = "Build Decimal extension"; + enabled = { php, lib, ... }: lib.versionAtLeast php.version "7"; + drv = { php, ... }: php.extensions.decimal; + }; + composer-phar = { description = "Check that composer PHAR works"; drv = diff --git a/pkgs/package-overrides.nix b/pkgs/package-overrides.nix index 507b142..fd23c85 100644 --- a/pkgs/package-overrides.nix +++ b/pkgs/package-overrides.nix @@ -104,6 +104,22 @@ in else prev.extensions.datadog_trace; + decimal = + if lib.versionOlder prev.php.version "7.0" then + throw "php.extensions.decimal requires PHP version >= 7.0" + else if lib.versionOlder prev.php.version "8.0" then + prev.extensions.decimal.overrideAttrs (attrs: { + preConfigure = attrs.preConfigure or "" + linkInternalDeps [ final.extensions.json ]; + + env = mergeEnv attrs { + NIX_CFLAGS_COMPILE = lib.optionals (lib.versionOlder prev.php.version "7.4") [ + "-Wno-incompatible-${lib.optionalString isClang "function-"}pointer-types" + ]; + }; + }) + else + prev.extensions.decimal; + dom = prev.extensions.dom.overrideAttrs (attrs: { patches = let