summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <fedora@famillecollet.com>2016-11-25 07:14:34 +0100
committerRemi Collet <fedora@famillecollet.com>2016-11-25 07:14:34 +0100
commita34699a9ee494af76147a0836e35e5bf5c7cbd14 (patch)
treee8967650dd09468ab211bdcb8274c054fe5ae9f6
parent0603f803c030a25436677dac5cb76ba28092be04 (diff)
php-ast: fix License + add upstream patch for 7.1
-rw-r--r--php-ast-dev.spec9
-rw-r--r--php-ast-upstream.patch97
-rw-r--r--php-ast.spec9
3 files changed, 113 insertions, 2 deletions
diff --git a/php-ast-dev.spec b/php-ast-dev.spec
index 8090e51..95336da 100644
--- a/php-ast-dev.spec
+++ b/php-ast-dev.spec
@@ -24,13 +24,15 @@ Version: 0.1.2
%if 0%{?gh_date:1}
Release: 0.2.%{gh_date}git%{gh_short}%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
%else
-Release: 2%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
+Release: 3%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
%endif
License: BSD
Group: Development/Languages
URL: https://github.com/%{gh_owner}/%{gh_project}
Source0: https://github.com/%{gh_owner}/%{gh_project}/archive/%{gh_commit}/%{gh_project}-%{version}-%{gh_short}.tar.gz
+Patch0: %{gh_project}-upstream.patch
+
BuildRequires: %{?scl_prefix}php-devel > 7
BuildRequires: %{?scl_prefix}php-tokenizer
@@ -66,6 +68,7 @@ Package built for PHP %(%{__php} -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSIO
mv %{gh_project}-%{gh_commit} NTS
cd NTS
+%patch0 -p1 -b .upstream
# Sanity check, really often broken
extver=$(sed -n '/#define PHP_AST_VERSION/{s/.* "//;s/".*$//;p}' php_ast.h)
@@ -166,6 +169,10 @@ REPORT_EXIT_STATUS=1 \
%changelog
+* Fri Nov 25 2016 Remi Collet <remi@fedoraproject.org> - 0.1.2-3
+- fix LICENSE, drop empty file, from review #1398355
+- add upstream patch for php 7.1
+
* Wed Sep 14 2016 Remi Collet <remi@fedoraproject.org> - 0.1.2-2
- rebuild for PHP 7.1 new API version
diff --git a/php-ast-upstream.patch b/php-ast-upstream.patch
new file mode 100644
index 0000000..264e630
--- /dev/null
+++ b/php-ast-upstream.patch
@@ -0,0 +1,97 @@
+From 81e2938b02ffb734bb85ef2a0fbc74f87b4ba377 Mon Sep 17 00:00:00 2001
+From: Nikita Popov <nikic@php.net>
+Date: Thu, 24 Nov 2016 21:49:21 +0100
+Subject: [PATCH] Fix issue #36
+
+The emulation of PHP 7.0 list() structure did not account for
+skipped elements.
+---
+ ast.c | 4 ++--
+ tests/array_destructuring_old.phpt | 19 +++++++++++++++++++
+ 2 files changed, 21 insertions(+), 2 deletions(-)
+
+diff --git a/ast.c b/ast.c
+index ad24ce8..755af14 100644
+--- a/ast.c
++++ b/ast.c
+@@ -241,7 +241,7 @@ static inline zend_bool ast_array_is_list(zend_ast *ast) {
+ }
+
+ for (i = 0; i < list->children; i++) {
+- if (list->child[i]->child[1] != NULL || list->child[i]->attr) {
++ if (list->child[i] && (list->child[i]->child[1] != NULL || list->child[i]->attr)) {
+ return 0;
+ }
+ }
+@@ -400,7 +400,7 @@ static void ast_fill_children_ht(HashTable *ht, zend_ast *ast, zend_long version
+ /* Skip docComment child -- It's handled separately */
+ continue;
+ #if PHP_VERSION_ID >= 70100
+- } else if (ast->kind == ZEND_AST_LIST) {
++ } else if (ast->kind == ZEND_AST_LIST && child != NULL) {
+ /* Emulate simple variable list */
+ ast_to_zval(&child_zv, child->child[0], version);
+ #else
+diff --git a/tests/array_destructuring_old.phpt b/tests/array_destructuring_old.phpt
+index 6699a80..0aa378d 100644
+--- a/tests/array_destructuring_old.phpt
++++ b/tests/array_destructuring_old.phpt
+@@ -8,6 +8,7 @@ require __DIR__ . '/../util.php';
+ $code = <<<'PHP'
+ <?php
+ list($a, $b) = $x;
++list(, $b) = $x;
+ PHP;
+
+ echo ast_dump(ast\parse_code($code, $version=30)), "\n";
+@@ -24,6 +25,13 @@ AST_STMT_LIST
+ name: "b"
+ expr: AST_VAR
+ name: "x"
++ 1: AST_ASSIGN
++ var: AST_LIST
++ 0: null
++ 1: AST_VAR
++ name: "b"
++ expr: AST_VAR
++ name: "x"
+ AST_STMT_LIST
+ 0: AST_ASSIGN
+ var: AST_ARRAY
+@@ -40,3 +48,14 @@ AST_STMT_LIST
+ key: null
+ expr: AST_VAR
+ name: "x"
++ 1: AST_ASSIGN
++ var: AST_ARRAY
++ flags: ARRAY_SYNTAX_LIST (1)
++ 0: null
++ 1: AST_ARRAY_ELEM
++ flags: 0
++ value: AST_VAR
++ name: "b"
++ key: null
++ expr: AST_VAR
++ name: "x"
+From fbab0c35d4c7851f32384073798a0031ecb4499e Mon Sep 17 00:00:00 2001
+From: Nikita Popov <nikic@php.net>
+Date: Thu, 24 Nov 2016 22:13:38 +0100
+Subject: [PATCH] Fix PHP 7 build
+
+---
+ ast.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ast.c b/ast.c
+index 4c4095d..62a9f48 100644
+--- a/ast.c
++++ b/ast.c
+@@ -405,7 +405,7 @@ static void ast_fill_children_ht(HashTable *ht, zend_ast *ast, zend_long version
+ ast_to_zval(&child_zv, child->child[0], version);
+ #else
+ } else if (version >= 35 && ast->kind == ZEND_AST_ARRAY
+- && ast->attr == ZEND_ARRAY_SYNTAX_LIST) {
++ && ast->attr == ZEND_ARRAY_SYNTAX_LIST && child != NULL) {
+ /* Emulate ARRAY_ELEM list */
+ zval ch0, ch1;
+ ast_to_zval(&ch0, child, version);
diff --git a/php-ast.spec b/php-ast.spec
index 202ec19..2fb9585 100644
--- a/php-ast.spec
+++ b/php-ast.spec
@@ -21,12 +21,14 @@
Summary: Abstract Syntax Tree
Name: php-ast
Version: 0.1.2
-Release: 1%{?dist}
+Release: 2%{?dist}
License: BSD
Group: Development/Languages
URL: https://github.com/%{gh_owner}/%{gh_project}
Source0: https://github.com/%{gh_owner}/%{gh_project}/archive/%{gh_commit}/%{gh_project}-%{version}-%{gh_short}.tar.gz
+Patch0: %{gh_project}-upstream.patch
+
BuildRequires: php-devel > 7
BuildRequires: php-tokenizer
@@ -44,6 +46,7 @@ This extension exposes the abstract syntax tree generated by PHP 7.
mv %{gh_project}-%{gh_commit} NTS
cd NTS
+%patch0 -p1 -b .upstream
# Sanity check, really often broken
extver=$(sed -n '/#define PHP_AST_VERSION/{s/.* "//;s/".*$//;p}' php_ast.h)
@@ -143,6 +146,10 @@ REPORT_EXIT_STATUS=1 \
%changelog
+* Fri Nov 25 2016 Remi Collet <remi@fedoraproject.org> - 0.1.2-2
+- fix LICENSE, drop empty file, from review #1398355
+- add upstream patch for php 7.1
+
* Thu Nov 24 2016 Remi Collet <remi@fedoraproject.org> - 0.1.2-1
- drop SCL stuff for Fedora review