summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Evans <grknight@gentoo.org>2021-01-21 09:34:15 -0500
committerBrian Evans <grknight@gentoo.org>2021-01-21 09:34:15 -0500
commit62456163577a6ec8302618b46e49d7a5c6b49a04 (patch)
tree7cb29c1f72faafc40c239be76cf9ecfae7c97dce
parentdev-util/cppunit: add subslot (diff)
downloadgentoo-62456163577a6ec8302618b46e49d7a5c6b49a04.tar.gz
gentoo-62456163577a6ec8302618b46e49d7a5c6b49a04.tar.bz2
gentoo-62456163577a6ec8302618b46e49d7a5c6b49a04.zip
dev-php/pecl-xdiff: Pre-release version bump for PHP 8 support
Signed-off-by: Brian Evans <grknight@gentoo.org>
-rw-r--r--dev-php/pecl-xdiff/files/2.1.0_pre-php8-2.patch214
-rw-r--r--dev-php/pecl-xdiff/files/2.1.0_pre-php8-3.patch39
-rw-r--r--dev-php/pecl-xdiff/files/2.1.0_pre-php8.patch467
-rw-r--r--dev-php/pecl-xdiff/pecl-xdiff-2.1.0_pre.ebuild30
4 files changed, 750 insertions, 0 deletions
diff --git a/dev-php/pecl-xdiff/files/2.1.0_pre-php8-2.patch b/dev-php/pecl-xdiff/files/2.1.0_pre-php8-2.patch
new file mode 100644
index 00000000000..80bebf7dfdd
--- /dev/null
+++ b/dev-php/pecl-xdiff/files/2.1.0_pre-php8-2.patch
@@ -0,0 +1,214 @@
+From 2afb71ae1d6bcebe66f2e52019222a117c607f66 Mon Sep 17 00:00:00 2001
+From: Rasmus Lerdorf <rasmus@lerdorf.com>
+Date: Thu, 14 Jan 2021 08:23:43 -0800
+Subject: [PATCH] Version 2.1.0 PHP 8 support Drop PHP 5 support
+
+diff --git a/xdiff.stub.php b/xdiff.stub.php
+new file mode 100644
+index 0000000..4597e7f
+--- /dev/null
++++ b/xdiff.stub.php
+@@ -0,0 +1,84 @@
++<?php
++/** @generate-function-entries */
++
++/**
++ * @param string $str1
++ * @param string $str2
++ * @param int $context
++ * @param bool $minimal
++ * @return string|false
++ */
++function xdiff_string_diff(string $str1, string $str2, int $context = 3, bool $minimal = false) {}
++
++function xdiff_file_diff(string $file1, string $file2, string $dest, int $context = 3, bool $minimal = false): bool {}
++
++/**
++ * @param string $str1
++ * @param string $str2
++ * @return string|false
++ * @alias xdiff_string_bdiff
++ */
++function xdiff_string_diff_binary(string $str1, string $str2) {}
++
++/** @alias xdiff_file_bdiff */
++function xdiff_file_diff_binary(string $file1, string $file2, string $dest): bool {}
++
++/**
++ * @param string $str1
++ * @param string $str2
++ * @return string|false
++ */
++function xdiff_string_rabdiff(string $str1, string $str2) {}
++
++function xdiff_file_rabdiff(string $file1, string $file2, string $dest): bool {}
++
++function xdiff_file_bdiff_size(string $file1, string $file2, string $dest): bool {}
++
++function xdiff_string_bdiff_size(string $file1, string $file2, string $dest): bool {}
++
++/**
++ * @param string $file
++ * @param string $patch
++ * @param string $dest
++ * @param int $flags
++ * @return string|bool
++ */
++function xdiff_file_patch(string $file, string $patch, string $dest, int $flags=XDIFF_PATCH_NORMAL) {}
++
++/**
++ * @param string $file
++ * @param string $patch
++ * @param int $flags
++ * @param string $error
++ * @return string|bool
++ */
++function xdiff_string_patch(string $file, string $patch, int $flags=XDIFF_PATCH_NORMAL, string &$error=null) {}
++
++/** @alias xdiff_file_bpatch */
++function xdiff_file_patch_binary(string $file, string $patch, string $dest): bool {}
++
++/**
++ * @param string $file
++ * @param string $patch
++ * @return string|false
++ * @alias xdiff_string_bpatch
++ */
++function xdiff_string_patch_binary(string $str, string $patch) {}
++
++/**
++ * @param string $file1
++ * @param string $file2
++ * @param string $file3
++ * @param string $dest
++ * @return string|bool
++ */
++function xdiff_file_merge3(string $file1, string $file2, string $file3, string $dest) {}
++
++/**
++ * @param string $str1
++ * @param string $str2
++ * @param string $str3
++ * @param string $error
++ * @return string|bool
++ */
++function xdiff_string_merge3(string $str1, string $str2, string $str3, string &$error=null) {}
+diff --git a/xdiff_arginfo.h b/xdiff_arginfo.h
+new file mode 100644
+index 0000000..2016f7e
+--- /dev/null
++++ b/xdiff_arginfo.h
+@@ -0,0 +1,110 @@
++/* This is a generated file, edit the .stub.php file instead.
++ * Stub hash: ec3a63aa4462f084433c3576ad532de87da7f867 */
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_string_diff, 0, 0, 2)
++ ZEND_ARG_TYPE_INFO(0, str1, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, str2, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, context, IS_LONG, 0, "3")
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, minimal, _IS_BOOL, 0, "false")
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_xdiff_file_diff, 0, 3, _IS_BOOL, 0)
++ ZEND_ARG_TYPE_INFO(0, file1, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, file2, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, dest, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, context, IS_LONG, 0, "3")
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, minimal, _IS_BOOL, 0, "false")
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_string_diff_binary, 0, 0, 2)
++ ZEND_ARG_TYPE_INFO(0, str1, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, str2, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_xdiff_file_diff_binary, 0, 3, _IS_BOOL, 0)
++ ZEND_ARG_TYPE_INFO(0, file1, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, file2, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, dest, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++
++#define arginfo_xdiff_string_rabdiff arginfo_xdiff_string_diff_binary
++
++#define arginfo_xdiff_file_rabdiff arginfo_xdiff_file_diff_binary
++
++#define arginfo_xdiff_file_bdiff_size arginfo_xdiff_file_diff_binary
++
++#define arginfo_xdiff_string_bdiff_size arginfo_xdiff_file_diff_binary
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_file_patch, 0, 0, 3)
++ ZEND_ARG_TYPE_INFO(0, file, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, patch, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, dest, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "XDIFF_PATCH_NORMAL")
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_string_patch, 0, 0, 2)
++ ZEND_ARG_TYPE_INFO(0, file, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, patch, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "XDIFF_PATCH_NORMAL")
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(1, error, IS_STRING, 0, "null")
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_xdiff_file_patch_binary, 0, 3, _IS_BOOL, 0)
++ ZEND_ARG_TYPE_INFO(0, file, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, patch, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, dest, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_string_patch_binary, 0, 0, 2)
++ ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, patch, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_file_merge3, 0, 0, 4)
++ ZEND_ARG_TYPE_INFO(0, file1, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, file2, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, file3, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, dest, IS_STRING, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_xdiff_string_merge3, 0, 0, 3)
++ ZEND_ARG_TYPE_INFO(0, str1, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, str2, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO(0, str3, IS_STRING, 0)
++ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(1, error, IS_STRING, 0, "null")
++ZEND_END_ARG_INFO()
++
++
++ZEND_FUNCTION(xdiff_string_diff);
++ZEND_FUNCTION(xdiff_file_diff);
++ZEND_FUNCTION(xdiff_string_bdiff);
++ZEND_FUNCTION(xdiff_file_bdiff);
++ZEND_FUNCTION(xdiff_string_rabdiff);
++ZEND_FUNCTION(xdiff_file_rabdiff);
++ZEND_FUNCTION(xdiff_file_bdiff_size);
++ZEND_FUNCTION(xdiff_string_bdiff_size);
++ZEND_FUNCTION(xdiff_file_patch);
++ZEND_FUNCTION(xdiff_string_patch);
++ZEND_FUNCTION(xdiff_file_bpatch);
++ZEND_FUNCTION(xdiff_string_bpatch);
++ZEND_FUNCTION(xdiff_file_merge3);
++ZEND_FUNCTION(xdiff_string_merge3);
++
++
++static const zend_function_entry ext_functions[] = {
++ ZEND_FE(xdiff_string_diff, arginfo_xdiff_string_diff)
++ ZEND_FE(xdiff_file_diff, arginfo_xdiff_file_diff)
++ ZEND_FALIAS(xdiff_string_diff_binary, xdiff_string_bdiff, arginfo_xdiff_string_diff_binary)
++ ZEND_FALIAS(xdiff_file_diff_binary, xdiff_file_bdiff, arginfo_xdiff_file_diff_binary)
++ ZEND_FE(xdiff_string_rabdiff, arginfo_xdiff_string_rabdiff)
++ ZEND_FE(xdiff_file_rabdiff, arginfo_xdiff_file_rabdiff)
++ ZEND_FE(xdiff_file_bdiff_size, arginfo_xdiff_file_bdiff_size)
++ ZEND_FE(xdiff_string_bdiff_size, arginfo_xdiff_string_bdiff_size)
++ ZEND_FE(xdiff_file_patch, arginfo_xdiff_file_patch)
++ ZEND_FE(xdiff_string_patch, arginfo_xdiff_string_patch)
++ ZEND_FALIAS(xdiff_file_patch_binary, xdiff_file_bpatch, arginfo_xdiff_file_patch_binary)
++ ZEND_FALIAS(xdiff_string_patch_binary, xdiff_string_bpatch, arginfo_xdiff_string_patch_binary)
++ ZEND_FE(xdiff_file_merge3, arginfo_xdiff_file_merge3)
++ ZEND_FE(xdiff_string_merge3, arginfo_xdiff_string_merge3)
++ ZEND_FE_END
++};
+--
+2.11.0
+
diff --git a/dev-php/pecl-xdiff/files/2.1.0_pre-php8-3.patch b/dev-php/pecl-xdiff/files/2.1.0_pre-php8-3.patch
new file mode 100644
index 00000000000..e4115546797
--- /dev/null
+++ b/dev-php/pecl-xdiff/files/2.1.0_pre-php8-3.patch
@@ -0,0 +1,39 @@
+From 5458ecb8ce81e921239af1a76d6acb54cf945863 Mon Sep 17 00:00:00 2001
+From: Rasmus Lerdorf <rasmus@lerdorf.com>
+Date: Thu, 14 Jan 2021 15:23:43 -0800
+Subject: [PATCH] Don't need these here
+
+---
+ php_xdiff.h | 16 ----------------
+ 1 file changed, 16 deletions(-)
+
+diff --git a/php_xdiff.h b/php_xdiff.h
+index de882fa..1b9a699 100644
+--- a/php_xdiff.h
++++ b/php_xdiff.h
+@@ -39,22 +39,6 @@ extern zend_module_entry xdiff_module_entry;
+ PHP_MINIT_FUNCTION(xdiff);
+ PHP_MINFO_FUNCTION(xdiff);
+
+-PHP_FUNCTION(xdiff_file_diff);
+-PHP_FUNCTION(xdiff_file_bdiff);
+-PHP_FUNCTION(xdiff_file_patch);
+-PHP_FUNCTION(xdiff_file_bpatch);
+-PHP_FUNCTION(xdiff_file_merge3);
+-PHP_FUNCTION(xdiff_file_rabdiff);
+-PHP_FUNCTION(xdiff_file_bdiff_size);
+-
+-PHP_FUNCTION(xdiff_string_diff);
+-PHP_FUNCTION(xdiff_string_bdiff);
+-PHP_FUNCTION(xdiff_string_patch);
+-PHP_FUNCTION(xdiff_string_bpatch);
+-PHP_FUNCTION(xdiff_string_merge3);
+-PHP_FUNCTION(xdiff_string_rabdiff);
+-PHP_FUNCTION(xdiff_string_bdiff_size);
+-
+ #endif /* PHP_XDIFF_H */
+
+
+--
+2.11.0
+
diff --git a/dev-php/pecl-xdiff/files/2.1.0_pre-php8.patch b/dev-php/pecl-xdiff/files/2.1.0_pre-php8.patch
new file mode 100644
index 00000000000..8a8f3ab4329
--- /dev/null
+++ b/dev-php/pecl-xdiff/files/2.1.0_pre-php8.patch
@@ -0,0 +1,467 @@
+From 2afb71ae1d6bcebe66f2e52019222a117c607f66 Mon Sep 17 00:00:00 2001
+From: Rasmus Lerdorf <rasmus@lerdorf.com>
+Date: Thu, 14 Jan 2021 08:23:43 -0800
+Subject: [PATCH] Version 2.1.0 PHP 8 support Drop PHP 5 support
+
+diff --git a/php_xdiff.h b/php_xdiff.h
+index c79ad63..de882fa 100644
+--- a/php_xdiff.h
++++ b/php_xdiff.h
+@@ -24,7 +24,7 @@
+ extern zend_module_entry xdiff_module_entry;
+ #define phpext_xdiff_ptr &xdiff_module_entry
+
+-#define PHP_XDIFF_VERSION "2.0.1"
++#define PHP_XDIFF_VERSION "2.1.0"
+
+ #ifdef PHP_WIN32
+ #define PHP_XDIFF_API __declspec(dllexport)
+diff --git a/xdiff.c b/xdiff.c
+index 0756c5a..f4c09f2 100644
+--- a/xdiff.c
++++ b/xdiff.c
+@@ -27,6 +27,29 @@
+ #include "ext/standard/info.h"
+ #include "php_xdiff.h"
+
++#ifndef ZEND_ARG_INFO_WITH_DEFAULT_VALUE
++#define ZEND_ARG_INFO_WITH_DEFAULT_VALUE(pass_by_ref, name, default_value) \
++ ZEND_ARG_INFO(pass_by_ref, name)
++#endif
++#if PHP_VERSION_ID < 70200
++#undef ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX
++#define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, class_name, allow_null) \
++ static const zend_internal_arg_info name[] = { \
++ { (const char*)(zend_uintptr_t)(required_num_args), ( #class_name ), 0, return_reference, allow_null, 0 },
++#endif
++
++#ifndef ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX
++#define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(name, return_reference, required_num_args, class_name, allow_null) \
++ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, class_name, allow_null)
++#endif
++
++#ifndef ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE
++#define ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(pass_by_ref, name, type_hint, allow_null, default_value) \
++ ZEND_ARG_TYPE_INFO(pass_by_ref, name, type_hint, allow_null)
++#endif
++
++#include "xdiff_arginfo.h"
++
+ #include <xdiff.h>
+
+ /* Not exported by header file */
+@@ -37,14 +60,7 @@ struct string_buffer {
+ unsigned long size;
+ };
+
+- ZEND_BEGIN_ARG_INFO(xdiff_arg_force_ref, 0)
+- ZEND_ARG_PASS_INFO(0)
+- ZEND_ARG_PASS_INFO(0)
+- ZEND_ARG_PASS_INFO(0)
+- ZEND_ARG_PASS_INFO(1)
+- ZEND_END_ARG_INFO()
+-
+-static int load_mm_file(const char *filepath, mmfile_t *dest TSRMLS_DC);
++static int load_mm_file(const char *filepath, mmfile_t *dest);
+ static int load_into_mm_file(const char *buffer, unsigned long size, mmfile_t *dest);
+ static int append_string(void *ptr, mmbuffer_t *buffer, int array_size);
+ static int append_stream(void *ptr, mmbuffer_t *buffer, int array_size);
+@@ -52,17 +68,17 @@ static int init_string(struct string_buffer *string);
+ static void free_string(struct string_buffer *string);
+ static void invalidate_string(struct string_buffer *string);
+
+-static int make_diff(char *filepath1, char *filepath2, xdemitcb_t *output, int context, int minimal TSRMLS_DC);
++static int make_diff(char *filepath1, char *filepath2, xdemitcb_t *output, int context, int minimal);
+ static int make_diff_str(char *str1, int size1, char *str2, int size2, xdemitcb_t *output, int context, int minimal);
+-static int make_bdiff(char *filepath1, char *filepath2, xdemitcb_t *output TSRMLS_DC);
++static int make_bdiff(char *filepath1, char *filepath2, xdemitcb_t *output);
+ static int make_bdiff_str(char *str1, int size1, char *str2, int size2, xdemitcb_t *output);
+-static int make_patch(char *file_path, char *patch_path, xdemitcb_t *output, xdemitcb_t *error, int flags TSRMLS_DC);
++static int make_patch(char *file_path, char *patch_path, xdemitcb_t *output, xdemitcb_t *error, int flags);
+ static int make_patch_str(char *file, int size1, char *patch, int size2, xdemitcb_t *output, xdemitcb_t *error, int flags);
+-static int make_bpatch(char *file_path, char *patch_path, xdemitcb_t *output TSRMLS_DC);
++static int make_bpatch(char *file_path, char *patch_path, xdemitcb_t *output);
+ static int make_bpatch_str(char *file, int size1, char *patch, int size2, xdemitcb_t *output);
+-static int make_merge3(char *filepath1, char *filepath2, char *filepath3, xdemitcb_t *output, xdemitcb_t *error TSRMLS_DC);
++static int make_merge3(char *filepath1, char *filepath2, char *filepath3, xdemitcb_t *output, xdemitcb_t *error);
+ static int make_merge3_str(char *content1, int size1, char *content2, int size2, char *content3, int size3, xdemitcb_t *output, xdemitcb_t *error);
+-static int make_rabdiff(char *filepath1, char *filepath2, xdemitcb_t *output TSRMLS_DC);
++static int make_rabdiff(char *filepath1, char *filepath2, xdemitcb_t *output);
+ static int make_rabdiff_str(char *str1, int size1, char *str2, int size2, xdemitcb_t *output);
+
+ static void *xdiff_malloc(void *foo, unsigned int size)
+@@ -84,33 +100,6 @@ static void *xdiff_realloc(void *foo, void *ptr, unsigned int nsize)
+
+ static memallocator_t allocator = { NULL, xdiff_malloc, xdiff_free, xdiff_realloc };
+
+-/* {{{ xdiff_functions[]
+- *
+- * Every user visible function must have an entry in xdiff_functions[].
+- */
+-zend_function_entry xdiff_functions[] = {
+- PHP_FE(xdiff_file_diff, NULL)
+- PHP_FE(xdiff_file_bdiff, NULL)
+- PHP_FE(xdiff_file_patch, NULL)
+- PHP_FE(xdiff_file_bpatch, NULL)
+- PHP_FE(xdiff_file_merge3, NULL)
+- PHP_FE(xdiff_file_rabdiff, NULL)
+- PHP_FE(xdiff_file_bdiff_size, NULL)
+- PHP_FE(xdiff_string_diff, NULL)
+- PHP_FE(xdiff_string_bdiff, NULL)
+- PHP_FE(xdiff_string_patch, xdiff_arg_force_ref)
+- PHP_FE(xdiff_string_bpatch, NULL)
+- PHP_FE(xdiff_string_merge3, xdiff_arg_force_ref)
+- PHP_FE(xdiff_string_rabdiff, NULL)
+- PHP_FE(xdiff_string_bdiff_size, NULL)
+- PHP_FALIAS(xdiff_file_diff_binary, xdiff_file_bdiff, NULL)
+- PHP_FALIAS(xdiff_file_patch_binary, xdiff_file_bpatch, NULL)
+- PHP_FALIAS(xdiff_string_diff_binary, xdiff_string_bdiff, NULL)
+- PHP_FALIAS(xdiff_string_patch_binary, xdiff_string_bpatch, NULL)
+- {NULL, NULL, NULL}
+-};
+-/* }}} */
+-
+ /* {{{ xdiff_module_entry
+ */
+ zend_module_entry xdiff_module_entry = {
+@@ -118,7 +107,7 @@ zend_module_entry xdiff_module_entry = {
+ STANDARD_MODULE_HEADER,
+ #endif
+ "xdiff",
+- xdiff_functions,
++ ext_functions,
+ PHP_MINIT(xdiff),
+ NULL,
+ NULL,
+@@ -172,7 +161,7 @@ PHP_FUNCTION(xdiff_string_diff)
+ xdemitcb_t output;
+ struct string_buffer string;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS|lb", &str1, &str2, &context, &minimal) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SS|lb", &str1, &str2, &context, &minimal) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -204,7 +193,7 @@ PHP_FUNCTION(xdiff_file_diff)
+ xdemitcb_t output;
+ php_stream *output_stream;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SSS|lb", &filepath1, &filepath2, &dest, &context, &minimal) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SSS|lb", &filepath1, &filepath2, &dest, &context, &minimal) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -217,7 +206,7 @@ PHP_FUNCTION(xdiff_file_diff)
+ output.priv = output_stream;
+ output.outf = append_stream;
+
+- retval = make_diff(filepath1->val, filepath2->val, &output, context, minimal TSRMLS_CC);
++ retval = make_diff(filepath1->val, filepath2->val, &output, context, minimal);
+ if (!retval)
+ goto out_stream_close;
+
+@@ -239,7 +228,7 @@ PHP_FUNCTION(xdiff_string_bdiff)
+ xdemitcb_t output;
+ struct string_buffer string;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS", &str1, &str2) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SS", &str1, &str2) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -270,7 +259,7 @@ PHP_FUNCTION(xdiff_file_bdiff)
+ xdemitcb_t output;
+ php_stream *output_stream;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SSS", &filepath1, &filepath2, &result) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SSS", &filepath1, &filepath2, &result) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -283,7 +272,7 @@ PHP_FUNCTION(xdiff_file_bdiff)
+ output.priv = output_stream;
+ output.outf = append_stream;
+
+- retval = make_bdiff(filepath1->val, filepath2->val, &output TSRMLS_CC);
++ retval = make_bdiff(filepath1->val, filepath2->val, &output);
+ if (!retval)
+ goto out_stream_close;
+
+@@ -305,7 +294,7 @@ PHP_FUNCTION(xdiff_string_rabdiff)
+ xdemitcb_t output;
+ struct string_buffer string;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS", &str1, &str2) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SS", &str1, &str2) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -336,7 +325,7 @@ PHP_FUNCTION(xdiff_file_rabdiff)
+ xdemitcb_t output;
+ php_stream *output_stream;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SSS", &filepath1, &filepath2, &result) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SSS", &filepath1, &filepath2, &result) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -349,7 +338,7 @@ PHP_FUNCTION(xdiff_file_rabdiff)
+ output.priv = output_stream;
+ output.outf = append_stream;
+
+- retval = make_rabdiff(filepath1->val, filepath2->val, &output TSRMLS_CC);
++ retval = make_rabdiff(filepath1->val, filepath2->val, &output);
+ if (!retval)
+ goto out_stream_close;
+
+@@ -371,13 +360,13 @@ PHP_FUNCTION(xdiff_file_bdiff_size)
+ long result;
+ mmfile_t file;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &filepath) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &filepath) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ RETVAL_FALSE;
+
+- retval = load_mm_file(filepath->val, &file TSRMLS_CC);
++ retval = load_mm_file(filepath->val, &file);
+ if (!retval)
+ goto out;
+
+@@ -403,7 +392,7 @@ PHP_FUNCTION(xdiff_string_bdiff_size)
+ long result;
+ mmfile_t file;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &patch) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &patch) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -437,7 +426,7 @@ PHP_FUNCTION(xdiff_file_patch)
+ xdemitcb_t output, error_output;
+ struct string_buffer error_string;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SSS|l", &src_path, &patch_path, &dest_path, &flags) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SSS|l", &src_path, &patch_path, &dest_path, &flags) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -457,7 +446,7 @@ PHP_FUNCTION(xdiff_file_patch)
+ error_output.priv= &error_string;
+ error_output.outf = append_string;
+
+- retval = make_patch(src_path->val, patch_path->val, &output, &error_output, flags TSRMLS_CC);
++ retval = make_patch(src_path->val, patch_path->val, &output, &error_output, flags);
+ if (retval < 0)
+ goto out_free_string;
+
+@@ -487,7 +476,7 @@ PHP_FUNCTION(xdiff_string_patch)
+ xdemitcb_t output, error_output;
+ struct string_buffer output_string, error_string;
+
+- if (zend_parse_parameters_ex(0, ZEND_NUM_ARGS() TSRMLS_CC, "SS|lz", &src, &patch, &flags, &error_ref) == FAILURE) {
++ if (zend_parse_parameters_ex(0, ZEND_NUM_ARGS(), "SS|lz", &src, &patch, &flags, &error_ref) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -539,7 +528,7 @@ PHP_FUNCTION(xdiff_file_bpatch)
+ int retval;
+ xdemitcb_t output;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SSS", &src_path, &patch_path, &dest_path) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SSS", &src_path, &patch_path, &dest_path) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -552,7 +541,7 @@ PHP_FUNCTION(xdiff_file_bpatch)
+ output.outf = append_stream;
+ output.priv = output_stream;
+
+- retval = make_bpatch(src_path->val, patch_path->val, &output TSRMLS_CC);
++ retval = make_bpatch(src_path->val, patch_path->val, &output);
+ php_stream_close(output_stream);
+
+ if (retval == 0)
+@@ -572,7 +561,7 @@ PHP_FUNCTION(xdiff_string_bpatch)
+ xdemitcb_t output;
+ struct string_buffer output_string;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS", &src, &patch) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SS", &src, &patch) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -608,7 +597,7 @@ PHP_FUNCTION(xdiff_file_merge3)
+ xdemitcb_t output, error_output;
+ int retval;
+
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SSSS", &file1, &file2, &file3, &dest) == FAILURE) {
++ if (zend_parse_parameters(ZEND_NUM_ARGS(), "SSSS", &file1, &file2, &file3, &dest) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -628,7 +617,7 @@ PHP_FUNCTION(xdiff_file_merge3)
+ error_output.priv = &string;
+ error_output.outf = append_string;
+
+- retval = make_merge3(file1->val, file2->val, file3->val, &output, &error_output TSRMLS_CC);
++ retval = make_merge3(file1->val, file2->val, file3->val, &output, &error_output);
+ if (!retval)
+ goto out_free_string;
+
+@@ -657,7 +646,7 @@ PHP_FUNCTION(xdiff_string_merge3)
+ xdemitcb_t output, error_output;
+ int retval;
+
+- if (zend_parse_parameters_ex(0, ZEND_NUM_ARGS() TSRMLS_CC, "SSS|z", &file1, &file2, &file3, &error_ref) == FAILURE) {
++ if (zend_parse_parameters_ex(0, ZEND_NUM_ARGS(), "SSS|z", &file1, &file2, &file3, &error_ref) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+@@ -700,7 +689,7 @@ out:
+ }
+ /* }}} */
+
+-static int load_mm_file(const char *filepath, mmfile_t *dest TSRMLS_DC)
++static int load_mm_file(const char *filepath, mmfile_t *dest)
+ {
+ int retval;
+ off_t filesize;
+@@ -789,7 +778,6 @@ static int append_stream(void *ptr, mmbuffer_t *buffer, int array_size)
+ {
+ php_stream *stream = ptr;
+ unsigned int i;
+- TSRMLS_FETCH();
+
+ for (i = 0; i < array_size; i++) {
+ php_stream_write(stream, buffer[i].ptr, buffer[i].size);
+@@ -821,18 +809,18 @@ static void free_string(struct string_buffer *string)
+ efree(string->ptr);
+ }
+
+-static int make_diff(char *filepath1, char *filepath2, xdemitcb_t *output, int context, int minimal TSRMLS_DC)
++static int make_diff(char *filepath1, char *filepath2, xdemitcb_t *output, int context, int minimal)
+ {
+ mmfile_t file1, file2;
+ xpparam_t params;
+ xdemitconf_t conf;
+ int retval, result = 0;
+
+- retval = load_mm_file(filepath1, &file1 TSRMLS_CC);
++ retval = load_mm_file(filepath1, &file1);
+ if (!retval)
+ goto out;
+
+- retval = load_mm_file(filepath2, &file2 TSRMLS_CC);
++ retval = load_mm_file(filepath2, &file2);
+ if (!retval)
+ goto out_free_mmfile;
+
+@@ -885,17 +873,17 @@ out:
+ return result;
+ }
+
+-static int make_bdiff(char *filepath1, char *filepath2, xdemitcb_t *output TSRMLS_DC)
++static int make_bdiff(char *filepath1, char *filepath2, xdemitcb_t *output)
+ {
+ mmfile_t file1, file2;
+ bdiffparam_t params;
+ int retval, result = 0;
+
+- retval = load_mm_file(filepath1, &file1 TSRMLS_CC);
++ retval = load_mm_file(filepath1, &file1);
+ if (!retval)
+ goto out;
+
+- retval = load_mm_file(filepath2, &file2 TSRMLS_CC);
++ retval = load_mm_file(filepath2, &file2);
+ if (!retval)
+ goto out_free_mmfile;
+
+@@ -945,16 +933,16 @@ out:
+ return result;
+ }
+
+-static int make_rabdiff(char *filepath1, char *filepath2, xdemitcb_t *output TSRMLS_DC)
++static int make_rabdiff(char *filepath1, char *filepath2, xdemitcb_t *output)
+ {
+ mmfile_t file1, file2;
+ int retval, result = 0;
+
+- retval = load_mm_file(filepath1, &file1 TSRMLS_CC);
++ retval = load_mm_file(filepath1, &file1);
+ if (!retval)
+ goto out;
+
+- retval = load_mm_file(filepath2, &file2 TSRMLS_CC);
++ retval = load_mm_file(filepath2, &file2);
+ if (!retval)
+ goto out_free_mmfile;
+
+@@ -999,16 +987,16 @@ out:
+ return result;
+ }
+
+-static int make_patch(char *file_path, char *patch_path, xdemitcb_t *output, xdemitcb_t *error, int flags TSRMLS_DC)
++static int make_patch(char *file_path, char *patch_path, xdemitcb_t *output, xdemitcb_t *error, int flags)
+ {
+ mmfile_t file, patch;
+ int retval, result = 0;
+
+- retval = load_mm_file(file_path, &file TSRMLS_CC);
++ retval = load_mm_file(file_path, &file);
+ if (!retval)
+ goto out;
+
+- retval = load_mm_file(patch_path, &patch TSRMLS_CC);
++ retval = load_mm_file(patch_path, &patch);
+ if (!retval)
+ goto out_free_mmfile;
+
+@@ -1053,16 +1041,16 @@ out:
+ return result;
+ }
+
+-static int make_bpatch(char *file_path, char *patch_path, xdemitcb_t *output TSRMLS_DC)
++static int make_bpatch(char *file_path, char *patch_path, xdemitcb_t *output)
+ {
+ mmfile_t file_mm, patch_mm;
+ int retval, result = 0;
+
+- retval = load_mm_file(file_path, &file_mm TSRMLS_CC);
++ retval = load_mm_file(file_path, &file_mm);
+ if (!retval)
+ goto out;
+
+- retval = load_mm_file(patch_path, &patch_mm TSRMLS_CC);
++ retval = load_mm_file(patch_path, &patch_mm);
+ if (!retval)
+ goto out_free_mmfile;
+
+@@ -1107,20 +1095,20 @@ out:
+ return result;
+ }
+
+-static int make_merge3(char *filepath1, char *filepath2, char *filepath3, xdemitcb_t *output, xdemitcb_t *error TSRMLS_DC)
++static int make_merge3(char *filepath1, char *filepath2, char *filepath3, xdemitcb_t *output, xdemitcb_t *error)
+ {
+ mmfile_t file1, file2, file3;
+ int retval, result = 0;
+
+- retval = load_mm_file(filepath1, &file1 TSRMLS_CC);
++ retval = load_mm_file(filepath1, &file1);
+ if (!retval)
+ goto out;
+
+- retval = load_mm_file(filepath2, &file2 TSRMLS_CC);
++ retval = load_mm_file(filepath2, &file2);
+ if (!retval)
+ goto out_free_mmfile;
+
+- retval = load_mm_file(filepath3, &file3 TSRMLS_CC);
++ retval = load_mm_file(filepath3, &file3);
+ if (!retval)
+ goto out_free_mmfile2;
+
diff --git a/dev-php/pecl-xdiff/pecl-xdiff-2.1.0_pre.ebuild b/dev-php/pecl-xdiff/pecl-xdiff-2.1.0_pre.ebuild
new file mode 100644
index 00000000000..336f7f480f7
--- /dev/null
+++ b/dev-php/pecl-xdiff/pecl-xdiff-2.1.0_pre.ebuild
@@ -0,0 +1,30 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PHP_EXT_NAME="xdiff"
+PHP_EXT_PECL_PKG="xdiff"
+DOCS=( README.API )
+
+USE_PHP="php7-3 php7-4 php8-0"
+PHP_EXT_PECL_FILENAME="${PN/pecl-/}-2.0.1.tgz"
+
+inherit php-ext-pecl-r3
+
+KEYWORDS="~amd64 ~x86"
+
+DESCRIPTION="PHP extension for generating diff files"
+LICENSE="PHP-3.01"
+SLOT="7"
+
+DEPEND="dev-libs/libxdiff"
+RDEPEND="${DEPEND}"
+PHP_EXT_ECONF_ARGS=()
+PATCHES=(
+"${FILESDIR}/2.1.0_pre-php8.patch"
+"${FILESDIR}/2.1.0_pre-php8-2.patch"
+"${FILESDIR}/2.1.0_pre-php8-3.patch"
+)
+S="${WORKDIR}/${PHP_EXT_PECL_FILENAME/.tgz/}"
+PHP_EXT_S="${S}"