summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <fedora@famillecollet.com>2016-04-15 14:06:33 +0200
committerRemi Collet <fedora@famillecollet.com>2016-04-15 14:06:33 +0200
commit3e9b2274d543bdd1a385e91df9635691324c507a (patch)
treeac2a7d8c3b29d9515954fcb394b570217a502e16
php-nikic-php-parser: 2.0.1 (new package)
-rw-r--r--Makefile4
-rw-r--r--composer.json30
-rw-r--r--php-nikic-php-parser-autoload.php19
-rw-r--r--php-nikic-php-parser-pr268.patch22
-rw-r--r--php-nikic-php-parser-pr269.patch32
-rw-r--r--php-nikic-php-parser-rpm.patch40
-rw-r--r--php-nikic-php-parser.spec156
7 files changed, 303 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..91b0fd5
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,4 @@
+SRCDIR := $(shell pwd)
+NAME := $(shell basename $(SRCDIR))
+include ../../common/Makefile
+
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..e494f43
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,30 @@
+{
+ "name": "nikic/php-parser",
+ "description": "A PHP parser written in PHP",
+ "keywords": ["php", "parser"],
+ "type": "library",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "require": {
+ "php": ">=5.4",
+ "ext-tokenizer": "*"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "bin": ["bin/php-parse"],
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ }
+}
diff --git a/php-nikic-php-parser-autoload.php b/php-nikic-php-parser-autoload.php
new file mode 100644
index 0000000..61dca27
--- /dev/null
+++ b/php-nikic-php-parser-autoload.php
@@ -0,0 +1,19 @@
+<?php
+/**
+ * Autoloader for nikic/php-parser and its dependencies
+ */
+
+$vendorDir = '/usr/share/php';
+
+// Use Symfony PSR4 autoloader
+if (!isset($fedoraPsr4ClassLoader) || !($fedoraPsr4ClassLoader instanceof \Symfony\Component\ClassLoader\Psr4ClassLoader)) {
+ if (!class_exists('Symfony\\Component\\ClassLoader\\Psr4ClassLoader', false)) {
+ require_once '/usr/share/php/Symfony/Component/ClassLoader/Psr4ClassLoader.php';
+ }
+
+ $fedoraPsr4ClassLoader = new \Symfony\Component\ClassLoader\Psr4ClassLoader();
+ $fedoraPsr4ClassLoader->register(true);
+}
+
+$fedoraPsr4ClassLoader->addPrefix('PhpParser\\', __DIR__);
+
diff --git a/php-nikic-php-parser-pr268.patch b/php-nikic-php-parser-pr268.patch
new file mode 100644
index 0000000..edca1d9
--- /dev/null
+++ b/php-nikic-php-parser-pr268.patch
@@ -0,0 +1,22 @@
+From 352125814fe223a18f89510b55989c36f92f4ee0 Mon Sep 17 00:00:00 2001
+From: Remi Collet <fedora@famillecollet.com>
+Date: Fri, 15 Apr 2016 13:53:04 +0200
+Subject: [PATCH] make autoloader more PSR-4
+
+---
+ lib/PhpParser/Autoloader.php | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/PhpParser/Autoloader.php b/lib/PhpParser/Autoloader.php
+index 560a8d9..809a06e 100644
+--- a/lib/PhpParser/Autoloader.php
++++ b/lib/PhpParser/Autoloader.php
+@@ -31,7 +31,7 @@ static public function register($prepend = false) {
+ */
+ static public function autoload($class) {
+ if (0 === strpos($class, 'PhpParser\\')) {
+- $fileName = dirname(__DIR__) . '/' . strtr($class, '\\', '/') . '.php';
++ $fileName = __DIR__ . strtr(substr($class, 9), '\\', '/') . '.php';
+ if (file_exists($fileName)) {
+ require $fileName;
+ }
diff --git a/php-nikic-php-parser-pr269.patch b/php-nikic-php-parser-pr269.patch
new file mode 100644
index 0000000..03bc429
--- /dev/null
+++ b/php-nikic-php-parser-pr269.patch
@@ -0,0 +1,32 @@
+From 7fe074c38c7e7d5359e92d8ed43ed3a5cdf65266 Mon Sep 17 00:00:00 2001
+From: Remi Collet <fedora@famillecollet.com>
+Date: Fri, 15 Apr 2016 13:58:42 +0200
+Subject: [PATCH] support -h and --help standard options
+
+---
+ bin/php-parse | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/bin/php-parse b/bin/php-parse
+index db6c411..f6ce166 100755
+--- a/bin/php-parse
++++ b/bin/php-parse
+@@ -101,6 +101,7 @@ Operations is a list of the following options (--dump by default):
+ --var-dump var_dump() nodes (for exact structure)
+ -N, --resolve-names Resolve names using NodeVisitor\NameResolver
+ -c, --with-column-info Show column-numbers for errors (if available)
++ -h, --help Display this page
+
+ Example:
+ php-parse -d -p -N -d file.php
+@@ -150,6 +151,10 @@ function parseArgs($args) {
+ case '-c';
+ $attributes['with-column-info'] = true;
+ break;
++ case '--help':
++ case '-h';
++ showHelp('');
++ break;
+ case '--':
+ $parseOptions = false;
+ break;
diff --git a/php-nikic-php-parser-rpm.patch b/php-nikic-php-parser-rpm.patch
new file mode 100644
index 0000000..d8bc078
--- /dev/null
+++ b/php-nikic-php-parser-rpm.patch
@@ -0,0 +1,40 @@
+diff -up ./bin/php-parse.rpm ./bin/php-parse
+--- ./bin/php-parse.rpm 2016-02-28 20:48:28.000000000 +0100
++++ ./bin/php-parse 2016-04-15 13:26:30.804687996 +0200
+@@ -1,12 +1,7 @@
+ #!/usr/bin/env php
+ <?php
+
+-foreach ([__DIR__ . '/../../../autoload.php', __DIR__ . '/../vendor/autoload.php'] as $file) {
+- if (file_exists($file)) {
+- require $file;
+- break;
+- }
+-}
++require '/usr/share/php/PhpParser2/autoload.php';
+
+ ini_set('xdebug.max_nesting_level', 3000);
+
+diff -up ./lib/bootstrap.php.rpm ./lib/bootstrap.php
+--- ./lib/bootstrap.php.rpm 2016-02-28 20:48:28.000000000 +0100
++++ ./lib/bootstrap.php 2016-04-15 13:26:30.804687996 +0200
+@@ -1,6 +1,6 @@
+ <?php
+
+ if (!class_exists('PhpParser\Autoloader')) {
+- require __DIR__ . '/PhpParser/Autoloader.php';
++ require __DIR__ . '/Autoloader.php';
+ }
+ PhpParser\Autoloader::register();
+diff -up ./test/bootstrap.php.rpm ./test/bootstrap.php
+--- ./test/bootstrap.php.rpm 2016-02-28 20:48:28.000000000 +0100
++++ ./test/bootstrap.php 2016-04-15 13:26:31.454690830 +0200
+@@ -2,7 +2,7 @@
+
+ namespace PhpParser;
+
+-require __DIR__ . '/../vendor/autoload.php';
++require '@BUILDROOT@/usr/share/php/PhpParser2/autoload.php';
+
+ function canonicalize($str) {
+ // trim from both sides
diff --git a/php-nikic-php-parser.spec b/php-nikic-php-parser.spec
new file mode 100644
index 0000000..42f5ab1
--- /dev/null
+++ b/php-nikic-php-parser.spec
@@ -0,0 +1,156 @@
+# remirepo/fedora spec file for php-nikic-php-parser
+#
+# Copyright (c) 2016 Remi Collet
+# License: CC-BY-SA
+# http://creativecommons.org/licenses/by-sa/4.0/
+#
+# Please, preserve the changelog entries
+#
+%global gh_commit ce5be709d59b32dd8a88c80259028759991a4206
+%global gh_short %(c=%{gh_commit}; echo ${c:0:7})
+%global gh_owner nikic
+%global gh_project PHP-Parser
+%global pk_project php-parser
+%global php_home %{_datadir}/php
+%global with_tests 0%{!?_without_tests:1}
+
+%global eolv1 0
+
+Name: php-%{gh_owner}-%{pk_project}
+Version: 2.0.1
+Release: 1%{?dist}
+Summary: A PHP parser written in PHP
+
+Group: Development/Libraries
+License: BSD
+URL: https://github.com/%{gh_owner}/%{gh_project}
+Source: https://github.com/%{gh_owner}/%{gh_project}/archive/%{gh_commit}/%{name}-%{version}-%{gh_short}.tar.gz
+
+# Autoloader
+Patch0: %{name}-rpm.patch
+# https://github.com/nikic/PHP-Parser/pull/268 - PSR-4 autoloader
+Patch1: %{name}-pr268.patch
+# https://github.com/nikic/PHP-Parser/pull/269 - --help option
+Patch2: %{name}-pr269.patch
+
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildArch: noarch
+%if %{with_tests}
+# For tests
+BuildRequires: php(language) >= 5.4
+BuildRequires: php-tokenizer
+BuildRequires: php-filter
+BuildRequires: php-pcre
+BuildRequires: php-spl
+BuildRequires: php-xmlreader
+BuildRequires: php-xmlwriter
+# From composer.json, "require-dev": {
+# "phpunit/phpunit": "~4.0"
+BuildRequires: php-composer(phpunit/phpunit) >= 4.0
+%endif
+
+# From composer.json, "require": {
+# "php": ">=5.4",
+# "ext-tokenizer": "*"
+Requires: php(language) >= 5.4
+Requires: php-tokenizer
+# From phpcompatinfo report for version 2.0.1
+Requires: php-filter
+Requires: php-pcre
+Requires: php-spl
+Requires: php-xmlreader
+Requires: php-xmlwriter
+%if %{eolv1}
+Obsoletes: php-PHPParser < 2
+Requires: php-cli
+%endif
+
+Provides: php-composer(%{gh_owner}/%{pk_project}) = %{version}
+
+
+%description
+This is a PHP 5.2 to PHP 7.0 parser written in PHP.
+Its purpose is to simplify static code analysis and manipulation.
+%if %{eolv1}
+This package provides the php-parse command.
+%else
+The php-PHPParser package provides the library version 1.x
+and the php-parse command.
+%endif
+Documentation: https://github.com/nikic/PHP-Parser/tree/master/doc
+
+Autoloader: %{php_home}/PhpParser2/autoload.php
+
+
+%prep
+%setup -q -n %{gh_project}-%{gh_commit}
+
+%patch0 -p1 -b .rpm
+%patch1 -p1 -b .pr268
+%patch2 -p1 -b .pr269
+
+: Cleanup to not install backup files
+find lib/PhpParser -name \*.pr268 -exec rm {} \; -print
+
+
+%build
+# Empty build section, most likely nothing required.
+
+
+%install
+rm -rf %{buildroot}
+
+: Library
+mkdir -p %{buildroot}%{php_home}
+cp -pr lib/PhpParser %{buildroot}%{php_home}/PhpParser2
+cp -p lib/bootstrap.php %{buildroot}%{php_home}/PhpParser2/autoload.php
+
+%if %{eolv1}
+: Command
+install -Dpm 0755 bin/php-parse %{buildroot}%{_bindir}/php-parse
+%endif
+
+
+%check
+%if %{with_tests}
+: Test the command
+sed -e 's:%{php_home}:%{buildroot}%{php_home}:' \
+ bin/php-parse > bin/php-parse-test
+php bin/php-parse-test --help
+
+: Test suite autoloader
+sed -e 's:@BUILDROOT@:%{buildroot}:' -i test/bootstrap.php
+
+: Upstream test suite
+%{_bindir}/phpunit --verbose
+
+if which php70; then
+ php70 %{_bindir}/phpunit --verbose
+fi
+%else
+: Test suite disabled
+%endif
+
+
+%clean
+rm -rf %{buildroot}
+
+
+%files
+%defattr(-,root,root,-)
+%{!?_licensedir:%global license %%doc}
+%license LICENSE
+%doc composer.json
+%doc *.md
+%if %{eolv1}
+%{_bindir}/php-parse
+%else
+%doc bin/php-parse
+%endif
+%{php_home}/PhpParser2
+
+
+%changelog
+* Fri Apr 15 2016 Remi Collet <remi@fedoraproject.org> - 2.0.0-1
+- initial package, version 2.0.1
+