Skip to content

Commit

Permalink
Add php-8.4 modules (#34683)
Browse files Browse the repository at this point in the history
First, just add the modules, copying from 8.3 versions.

    $ for p in php-8.3-*.yaml; do
      sed -e 's,epoch: .*,epoch: 0,' \
          -e 's,name: php-8.3-,name: php-8.4-,' \
         "$p" > php-8.4${p#php-8.3};
    done

Then fix some to build with 8.4, cherry picking from upstream.

 * php-8.4-pecl-mcrypt - cherry-pick a PR to build for 8.4
   Grab php/pecl-encryption-mcrypt#19
   which just uses php_mt_rand_range rather than now-removed php_rand.

 * php-8.4-imagick - cherry pick pr to build for 8.4
   Grab Imagick/imagick#690 
   to replace php_strlower with zend_str_tolower

 * php-8.4-xdebug - cherry pick several upstream changes
   NOTE: I have very low confidence in this, other than it builds.
   xdebug is active and likely to release a 3.4.0 release soon
   that has php 8.4 support properly.

   By adding php-8.4-xdebug with updates enabled, we will get
   a PR automatically made and hopefully landed just by dropping
   the cherry-picks here.

 * Drop php-8.4-swoole - not supported upstream yet.
    
   Several changes would be needed to make the 5.1.5
   version of swoole build with php 8.4.
   Upstream explicitly removed support from
   the 5.1 branch swoole/swoole-src#5525
   
   There is likely 6.0.0 release coming soon (beta released 2024-10-17).
   We will have to manually re-add at that point in time.

 * php-8.4-memcached and php-8.4-redis are separated out to another PR
   as they are dependent on php-8.4-igbinary output.
  • Loading branch information
smoser authored Nov 21, 2024
1 parent 714f457 commit 5e8fde5
Show file tree
Hide file tree
Showing 22 changed files with 1,548 additions and 0 deletions.
65 changes: 65 additions & 0 deletions php-8.4-amqp.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package:
name: php-8.4-amqp
version: 2.1.2
epoch: 0
description: "PHP extension to communicate with any AMQP compliant server"
copyright:
- license: PHP-3.01
dependencies:
runtime:
- ${{package.name}}-config
- php-${{vars.phpMM}}
- rabbitmq-c

var-transforms:
- from: ${{package.name}}
match: ^php-(\d+\.\d+)-.*$
replace: "$1"
to: phpMM

environment:
contents:
packages:
- autoconf
- build-base
- busybox
- php-${{vars.phpMM}}
- php-${{vars.phpMM}}-dev
- rabbitmq-c-dev

pipeline:
- uses: git-checkout
with:
repository: https://github.com/php-amqp/php-amqp
tag: "v${{package.version}}"
expected-commit: 82424ed50eb10cd97777e2aabf0f2a0887faf447

- name: Prepare build
runs: phpize

- name: Configure
runs: |
set -x
./configure
- uses: autoconf/make

- name: Make install
runs: |
set -x
INSTALL_ROOT="${{targets.destdir}}" DESTDIR="${{targets.destdir}}" make install
subpackages:
- name: ${{package.name}}-config
pipeline:
- runs: |
mkdir -p "${{targets.subpkgdir}}/etc/php/conf.d"
echo "extension=amqp.so" > "${{targets.subpkgdir}}/etc/php/conf.d/amqp.ini"
update:
enabled: true
github:
identifier: php-amqp/php-amqp
strip-prefix: v
tag-filter: v
use-tag: true
118 changes: 118 additions & 0 deletions php-8.4-apcu.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
package:
name: php-8.4-apcu
version: 5.1.24
epoch: 0
description: "PHP extension for User Cache"
copyright:
- license: PHP-3.01
dependencies:
runtime:
- ${{package.name}}-config
- php-${{vars.phpMM}}

var-transforms:
- from: ${{package.name}}
match: ^php-(\d+\.\d+)-.*$
replace: "$1"
to: phpMM

environment:
contents:
packages:
- autoconf
- build-base
- busybox
- php-${{vars.phpMM}}
- php-${{vars.phpMM}}-dev

pipeline:
- uses: git-checkout
with:
repository: https://github.com/krakjoe/apcu
tag: "v${{package.version}}"
expected-commit: 62e67989a35247263c370b5ecebb4e69b73b0709

- name: Prepare build
runs: phpize

- name: Build
runs: |
set -x
./configure
- name: Make install
runs: |
INSTALL_ROOT="${{targets.destdir}}" DESTDIR="${{targets.destdir}}" make install
subpackages:
- name: ${{package.name}}-config
pipeline:
- runs: |
mkdir -p "${{targets.subpkgdir}}/etc/php/conf.d"
echo "extension=apcu.so" > "${{targets.subpkgdir}}/etc/php/conf.d/apcu.ini"
update:
enabled: true
github:
identifier: krakjoe/apcu
strip-prefix: v
tag-filter: v
use-tag: true

test:
pipeline:
- name: "Check if extension is loaded"
runs: |
php -m | grep -i "apcu"
- name: "Verify extension version"
runs: |
php -r 'echo phpversion("apcu");'
- name: "Test basic cache storage and retrieval"
runs: |
php -d apc.enable_cli=1 -r '
if (!apcu_store("test_key", "test_value")) exit(1);
$value = apcu_fetch("test_key");
if ($value !== "test_value") exit(1);
echo "Success";
'
- name: "Test cache exists functionality"
runs: |
php -d apc.enable_cli=1 -r '
if (!apcu_store("check_key", "check_value")) exit(1);
if (!apcu_exists("check_key")) exit(1);
if (apcu_exists("nonexistent_key")) exit(1);
echo "Success";
'
- name: "Test cache deletion"
runs: |
php -d apc.enable_cli=1 -r '
if (!apcu_store("delete_key", "delete_value")) exit(1);
if (!apcu_delete("delete_key")) exit(1);
if (apcu_exists("delete_key")) exit(1);
echo "Success";
'
- name: "Test cache clearing"
runs: |
php -d apc.enable_cli=1 -r '
if (!apcu_store("clear_key", "clear_value")) exit(1);
if (!apcu_clear_cache()) exit(1);
if (apcu_exists("clear_key")) exit(1);
echo "Success";
'
- name: "Test increment/decrement operations"
runs: |
php -d apc.enable_cli=1 -r '
if (!apcu_store("counter", 5)) exit(1);
if (apcu_inc("counter") !== 6) exit(1);
if (apcu_dec("counter") !== 5) exit(1);
echo "Success";
'
- name: "Verify configuration file"
runs: |
grep -q "^extension=apcu.so" /etc/php/conf.d/apcu.ini
- name: "Verify APCu is enabled in CLI"
runs: |
php -d apc.enable_cli=1 -r '
if (!ini_get("apc.enable_cli")) exit(1);
echo "APCu CLI mode enabled";
'
100 changes: 100 additions & 0 deletions php-8.4-ddtrace.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
package:
name: php-8.4-ddtrace
version: 1.5.1
epoch: 0
description: "Datadog PHP Clients"
copyright:
- license: Apache-2.0 OR BSD-3-Clause
dependencies:
runtime:
- ${{package.name}}-config
- php-${{vars.phpMM}}

var-transforms:
- from: ${{package.name}}
match: ^php-(\d+\.\d+)-.*$
replace: "$1"
to: phpMM

environment:
contents:
packages:
- autoconf
- build-base
- busybox
- curl-dev
- php-${{vars.phpMM}}
- php-${{vars.phpMM}}-dev
- posix-libc-utils
- rust

pipeline:
- uses: git-checkout
with:
repository: https://github.com/DataDog/dd-trace-php
tag: "${{package.version}}"
expected-commit: ab52de5890d2409618f363591799fc674eb0d4a2

- name: Clone submodules
runs: git submodule update --init --recursive

- name: Prepare build
runs: phpize

- name: Configure
runs: ./configure

- name: Make install
runs: INSTALL_ROOT="${{targets.destdir}}" DESTDIR="${{targets.destdir}}" make install

subpackages:
- name: ${{package.name}}-config
pipeline:
- runs: |
mkdir -p "${{targets.subpkgdir}}/etc/php/conf.d"
echo "extension=ddtrace.so" > "${{targets.subpkgdir}}/etc/php/conf.d/ddtrace.ini"
test:
environment:
contents:
packages:
- php-${{vars.phpMM}}
pipeline:
- name: Verify Extension is Loaded
runs: |
php -m | grep -i 'ddtrace'
if [ $? -ne 0 ]; then
echo "Test failed: ddtrace extension is not loaded."
exit 1
else
echo "Test passed: ddtrace extension is loaded."
fi
- name: Test Basic ddtrace Functionality
runs: |
echo "<?php
use function DDTrace\trace_method;
use function DDTrace\trace_function;
\DDTrace\trace_method('App', 'get', function () {
echo \"Datadog tracer is running and trace method was created.\n\";
});
\DDTrace\trace_function('App\some_utility_function', function () {
echo \"Datadog tracer is running and trace function was created.\n\";
});
?>" > test.php
php test.php
if [ $? -ne 0 ]; then
echo "Test failed: Unable to use ddtrace extension."
exit 1
else
echo "Test passed: ddtrace extension is functional."
fi
update:
enabled: true
github:
identifier: DataDog/dd-trace-php
use-tag: true
60 changes: 60 additions & 0 deletions php-8.4-decimal.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package:
name: php-8.4-decimal
version: 1.5.0
epoch: 0
description: Correctly-rounded, arbitrary-precision decimal arithmetic for PHP
copyright:
- license: MIT
dependencies:
runtime:
- ${{package.name}}-config
- php-${{vars.phpMM}}

var-transforms:
- from: ${{package.name}}
match: ^php-(\d+\.\d+)-.*$
replace: "$1"
to: phpMM

environment:
contents:
packages:
- autoconf
- build-base
- busybox
- mpdecimal-dev
- php-${{vars.phpMM}}
- php-${{vars.phpMM}}-dev

pipeline:
- uses: git-checkout
with:
repository: https://github.com/php-decimal/ext-decimal
tag: "v${{package.version}}"
expected-commit: 9b4d6f4cf282230a0949ef4204e0b6bfe29b2c51

- name: Prepare build
runs: phpize

- name: Configure
runs: ./configure

- uses: autoconf/make

- name: Make install
runs: INSTALL_ROOT="${{targets.destdir}}" DESTDIR="${{targets.destdir}}" make install

subpackages:
- name: ${{package.name}}-config
pipeline:
- runs: |
mkdir -p "${{targets.subpkgdir}}/etc/php/conf.d"
echo "extension=decimal.so" > "${{targets.subpkgdir}}/etc/php/conf.d/decimal.ini"
update:
enabled: true
github:
identifier: php-decimal/ext-decimal
strip-prefix: v
tag-filter: v
use-tag: true
Loading

0 comments on commit 5e8fde5

Please sign in to comment.