mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-05-05 20:36:40 +02:00
testing/php81-pecl-msgpack: new aport
This commit is contained in:
parent
2b95f8dd0a
commit
feeca04269
48
testing/php81-pecl-msgpack/APKBUILD
Normal file
48
testing/php81-pecl-msgpack/APKBUILD
Normal file
@ -0,0 +1,48 @@
|
||||
# Contributor: Fabio Ribeiro <fabiorphp@gmail.com>
|
||||
# Maintainer: Andy Postnikov <apostnikov@gmail.com>
|
||||
pkgname=php81-pecl-msgpack
|
||||
_extname=msgpack
|
||||
pkgver=2.2.0_rc1
|
||||
_pkgver=${pkgver/_rc/RC}
|
||||
pkgrel=0
|
||||
pkgdesc="PHP 8.1 extension provides API for communicating with MessagePack serialization - PECL"
|
||||
url="https://pecl.php.net/package/msgpack"
|
||||
arch="all"
|
||||
license="BSD-3-Clause"
|
||||
depends="php81-session php81-sockets"
|
||||
makedepends="php81-dev"
|
||||
checkdepends="php81-pecl-apcu"
|
||||
source="php-pecl-$_extname-$_pkgver.tgz::https://pecl.php.net/get/$_extname-$_pkgver.tgz msgpack-162.patch"
|
||||
builddir="$srcdir"/$_extname-$_pkgver
|
||||
provides="php-msgpack=$pkgver-r$pkgrel" # for backward compatibility
|
||||
replaces="php-msgpack" # for backward compatibility
|
||||
|
||||
build() {
|
||||
phpize81
|
||||
./configure --prefix=/usr --with-php-config=php-config81
|
||||
make
|
||||
}
|
||||
|
||||
check() {
|
||||
rm -f tests/034.phpt # XFAIL https://github.com/msgpack/msgpack-php/issues/136
|
||||
rm -f tests/035.phpt # fails on ppc64le as of slow environment https://github.com/msgpack/msgpack-php/issues/123
|
||||
# Tests require session and sockets extensions which are not bundled
|
||||
local _depsdir=/usr/lib/php81/modules
|
||||
make NO_INTERACTION=1 REPORT_EXIT_STATUS=1 test PHP_TEST_SHARED_EXTENSIONS="
|
||||
-d extension=$_depsdir/apcu.so \
|
||||
-d extension=$_depsdir/session.so \
|
||||
-d extension=$_depsdir/sockets.so \
|
||||
-d extension=modules/$_extname.so" TESTS=--show-diff
|
||||
}
|
||||
|
||||
package() {
|
||||
make INSTALL_ROOT="$pkgdir" install
|
||||
local _confdir="$pkgdir"/etc/php81/conf.d
|
||||
install -d $_confdir
|
||||
echo "extension=$_extname" > $_confdir/50_$_extname.ini
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
4ddb9b6e9f4d9255d49c10e03a9ad4b37cf869f30b5e3c333518314bdbdfa8d4d20996a24954da19cba6352e76e02488b813fe6aa107c8fe390d6ca85d625096 php-pecl-msgpack-2.2.0RC1.tgz
|
||||
58521a1bd0e6189e627cdb6d1a337fd5565fe6c3f9032375e8883332467866e36b3bd4f84b267cd561a988d6f44dd33de8f562561f05ce6fd5d3371af243ba4d msgpack-162.patch
|
||||
"
|
||||
186
testing/php81-pecl-msgpack/msgpack-162.patch
Normal file
186
testing/php81-pecl-msgpack/msgpack-162.patch
Normal file
@ -0,0 +1,186 @@
|
||||
diff --git a/config.m4 b/config.m4
|
||||
index 5a3fe1a..6178d4e 100644
|
||||
--- a/config.m4
|
||||
+++ b/config.m4
|
||||
@@ -5,6 +5,15 @@ Make sure that the comment is aligned:
|
||||
[ --with-msgpack Include msgpack support])
|
||||
|
||||
if test "$PHP_MSGPACK" != "no"; then
|
||||
+ AC_MSG_CHECKING([for APC/APCU includes])
|
||||
+ if test -f "$phpincludedir/ext/apcu/apc_serializer.h"; then
|
||||
+ apc_inc_path="$phpincludedir"
|
||||
+ AC_MSG_RESULT([APCU in $apc_inc_path])
|
||||
+ AC_DEFINE(HAVE_APCU_SUPPORT,1,[Whether to enable apcu support])
|
||||
+ else
|
||||
+ AC_MSG_RESULT([not found])
|
||||
+ fi
|
||||
+
|
||||
PHP_NEW_EXTENSION(msgpack, msgpack.c msgpack_pack.c msgpack_unpack.c msgpack_class.c msgpack_convert.c, $ext_shared)
|
||||
|
||||
ifdef([PHP_INSTALL_HEADERS],
|
||||
diff --git a/msgpack.c b/msgpack.c
|
||||
index bc01848..1d332b5 100644
|
||||
--- a/msgpack.c
|
||||
+++ b/msgpack.c
|
||||
@@ -13,6 +13,10 @@
|
||||
#include "ext/session/php_session.h" /* for php_session_register_serializer */
|
||||
#endif
|
||||
|
||||
+#if defined(HAVE_APCU_SUPPORT)
|
||||
+#include "ext/apcu/apc_serializer.h"
|
||||
+#endif /* HAVE_APCU_SUPPORT */
|
||||
+
|
||||
#include "php_msgpack.h"
|
||||
#include "msgpack_pack.h"
|
||||
#include "msgpack_unpack.h"
|
||||
@@ -54,6 +58,12 @@ PHP_INI_END()
|
||||
PS_SERIALIZER_FUNCS(msgpack);
|
||||
#endif
|
||||
|
||||
+#if defined(HAVE_APCU_SUPPORT)
|
||||
+/** Apc serializer function prototypes */
|
||||
+static int APC_SERIALIZER_NAME(msgpack) (APC_SERIALIZER_ARGS);
|
||||
+static int APC_UNSERIALIZER_NAME(msgpack) (APC_UNSERIALIZER_ARGS);
|
||||
+#endif
|
||||
+
|
||||
static zend_function_entry msgpack_functions[] = {
|
||||
ZEND_FE(msgpack_serialize, arginfo_msgpack_serialize)
|
||||
ZEND_FE(msgpack_unserialize, arginfo_msgpack_unserialize)
|
||||
@@ -88,6 +98,13 @@ static ZEND_MINIT_FUNCTION(msgpack) /* {{{ */ {
|
||||
php_session_register_serializer("msgpack", PS_SERIALIZER_ENCODE_NAME(msgpack), PS_SERIALIZER_DECODE_NAME(msgpack));
|
||||
#endif
|
||||
|
||||
+#if defined(HAVE_APCU_SUPPORT)
|
||||
+ apc_register_serializer("msgpack",
|
||||
+ APC_SERIALIZER_NAME(msgpack),
|
||||
+ APC_UNSERIALIZER_NAME(msgpack),
|
||||
+ NULL);
|
||||
+#endif
|
||||
+
|
||||
msgpack_init_class();
|
||||
|
||||
REGISTER_LONG_CONSTANT("MESSAGEPACK_OPT_PHPONLY",
|
||||
@@ -109,6 +126,11 @@ static ZEND_MINFO_FUNCTION(msgpack) /* {{{ */ {
|
||||
php_info_print_table_row(2, "MessagePack Support", "enabled");
|
||||
#if HAVE_PHP_SESSION
|
||||
php_info_print_table_row(2, "Session Support", "enabled" );
|
||||
+#endif
|
||||
+#if defined(HAVE_APCU_SUPPORT)
|
||||
+ php_info_print_table_row(2, "MessagePack APCu Serializer ABI", APC_SERIALIZER_ABI);
|
||||
+#else
|
||||
+ php_info_print_table_row(2, "MessagePack APCu Serializer ABI", "no");
|
||||
#endif
|
||||
php_info_print_table_row(2, "extension Version", PHP_MSGPACK_VERSION);
|
||||
php_info_print_table_row(2, "header Version", MSGPACK_VERSION);
|
||||
@@ -300,6 +322,30 @@ static ZEND_FUNCTION(msgpack_unserialize) /* {{{ */ {
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
+#if defined(HAVE_APCU_SUPPORT)
|
||||
+static int APC_SERIALIZER_NAME(msgpack) ( APC_SERIALIZER_ARGS ) /* {{{ */ {
|
||||
+ smart_str res = {0};
|
||||
+ php_msgpack_serialize(&res, (zval *) value);
|
||||
+
|
||||
+ if (res.s) {
|
||||
+ smart_str_0(&res);
|
||||
+ *buf = (unsigned char *) estrndup(ZSTR_VAL(res.s), ZSTR_LEN(res.s));
|
||||
+ *buf_len = ZSTR_LEN(res.s);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+/* }}} */
|
||||
+
|
||||
+static int APC_UNSERIALIZER_NAME(msgpack) ( APC_UNSERIALIZER_ARGS ) /* {{{ */ {
|
||||
+ if (buf_len > 0 && php_msgpack_unserialize(value, buf, buf_len) == SUCCESS) {
|
||||
+ return 1;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+/* }}} */
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* Local variables:
|
||||
* tab-width: 4
|
||||
diff --git a/tests/029.phpt b/tests/029.phpt
|
||||
index a7e3887..45eb732 100644
|
||||
--- a/tests/029.phpt
|
||||
+++ b/tests/029.phpt
|
||||
@@ -44,6 +44,7 @@ msgpack
|
||||
|
||||
MessagePack Support => enabled
|
||||
Session Support => enabled
|
||||
+MessagePack APCu Serializer ABI => %s
|
||||
extension Version => %s
|
||||
header Version => %s
|
||||
|
||||
diff --git a/tests/apcu.phpt b/tests/apcu.phpt
|
||||
new file mode 100644
|
||||
index 0000000..7f1c554
|
||||
--- /dev/null
|
||||
+++ b/tests/apcu.phpt
|
||||
@@ -0,0 +1,63 @@
|
||||
+--TEST--
|
||||
+APCu serialization
|
||||
+--INI--
|
||||
+apc.enabled=1
|
||||
+apc.enable_cli=1
|
||||
+apc.serializer=msgpack
|
||||
+--SKIPIF--
|
||||
+<?php
|
||||
+if (!extension_loaded("msgpack")) print "skip";
|
||||
+if (!extension_loaded("apcu")) {
|
||||
+ echo "skip needs APCu enabled";
|
||||
+}
|
||||
+?>
|
||||
+--FILE--
|
||||
+<?php
|
||||
+echo ini_get('apc.serializer'), "\n";
|
||||
+
|
||||
+apcu_store('foo', 100);
|
||||
+var_dump(apcu_fetch('foo'));
|
||||
+
|
||||
+$foo = 'hello world';
|
||||
+
|
||||
+apcu_store('foo', $foo);
|
||||
+var_dump(apcu_fetch('foo'));
|
||||
+
|
||||
+apcu_store('foo\x00bar', $foo);
|
||||
+var_dump(apcu_fetch('foo\x00bar'));
|
||||
+
|
||||
+apcu_store('foo', ['foo' => $foo]);
|
||||
+var_dump(apcu_fetch('foo'));
|
||||
+
|
||||
+class Foo {
|
||||
+ public $int = 10;
|
||||
+ protected $array = [];
|
||||
+ private $string = 'foo';
|
||||
+}
|
||||
+
|
||||
+$a = new Foo;
|
||||
+apcu_store('foo', $a);
|
||||
+unset($a);
|
||||
+var_dump(apcu_fetch('foo'));
|
||||
+
|
||||
+?>
|
||||
+===DONE===
|
||||
+--EXPECT--
|
||||
+msgpack
|
||||
+int(100)
|
||||
+string(11) "hello world"
|
||||
+string(11) "hello world"
|
||||
+array(1) {
|
||||
+ ["foo"]=>
|
||||
+ string(11) "hello world"
|
||||
+}
|
||||
+object(Foo)#1 (3) {
|
||||
+ ["int"]=>
|
||||
+ int(10)
|
||||
+ ["array":protected]=>
|
||||
+ array(0) {
|
||||
+ }
|
||||
+ ["string":"Foo":private]=>
|
||||
+ string(3) "foo"
|
||||
+}
|
||||
+===DONE===
|
||||
Loading…
x
Reference in New Issue
Block a user