diff options
-rw-r--r-- | php-jakubledl-dissect-bin.patch | 36 | ||||
-rw-r--r-- | php-jakubledl-dissect-fix-redefinition-of-parameter.patch | 13 | ||||
-rw-r--r-- | php-jakubledl-dissect.spec | 164 |
3 files changed, 213 insertions, 0 deletions
diff --git a/php-jakubledl-dissect-bin.patch b/php-jakubledl-dissect-bin.patch new file mode 100644 index 0000000..ed2d9dc --- /dev/null +++ b/php-jakubledl-dissect-bin.patch @@ -0,0 +1,36 @@ +diff --git a/bin/dissect.php b/bin/dissect.php +index db6b1c4..830021f 100644 +--- a/bin/dissect.php ++++ b/bin/dissect.php +@@ -1,27 +1,13 @@ ++#!/usr/bin/env php + <?php + +-define('DISSECT_VERSION', 'DEV'); ++define('DISSECT_VERSION', '__VERSION__'); + +-if (is_dir($vendor = getcwd() . '/vendor')) { +- require $vendor . '/autoload.php'; +-} +- +-if (is_dir($vendor = __DIR__ . '/../vendor')) { +- require $vendor . '/autoload.php'; +-} elseif (is_dir($vendor = __DIR__ . '/../../../../vendor')) { +- require $vendor . '/autoload.php'; +-} else { +- die( +- 'You must set up the project dependencies.' . PHP_EOL . +- 'To do that, run the following commands:' . PHP_EOL . PHP_EOL . +- '$ curl -s http://getcomposer.org/installer | php' . PHP_EOL . +- '$ php composer.phar install' . PHP_EOL +- ); +-} ++require_once '__PHPDIR__/Dissect/autoload.php'; + + if (!class_exists('Symfony\Component\Console\Application')) { + die( +- 'You must install the symfony/console package in order ' . ++ 'You must install the php-symfony-console package in order ' . + 'to use the command-line tool.' . PHP_EOL + ); + } diff --git a/php-jakubledl-dissect-fix-redefinition-of-parameter.patch b/php-jakubledl-dissect-fix-redefinition-of-parameter.patch new file mode 100644 index 0000000..2938a03 --- /dev/null +++ b/php-jakubledl-dissect-fix-redefinition-of-parameter.patch @@ -0,0 +1,13 @@ +diff --git a/tests/Dissect/Parser/LALR1/ArithGrammar.php b/tests/Dissect/Parser/LALR1/ArithGrammar.php +index 51a75f2..5a06c5e 100644 +--- a/tests/Dissect/Parser/LALR1/ArithGrammar.php ++++ b/tests/Dissect/Parser/LALR1/ArithGrammar.php +@@ -39,7 +39,7 @@ class ArithGrammar extends Grammar + }) + + ->is('(', 'Additive', ')') +- ->call(function ($_, $e, $_) { ++ ->call(function ($_, $e, $_2) { + return $e; + }); + diff --git a/php-jakubledl-dissect.spec b/php-jakubledl-dissect.spec new file mode 100644 index 0000000..a86f8ea --- /dev/null +++ b/php-jakubledl-dissect.spec @@ -0,0 +1,164 @@ +# +# Fedora spec file for php-jakubledl-dissect +# +# Copyright (c) 2017 Shawn Iwinski <shawn@iwin.ski> +# +# License: MIT +# http://opensource.org/licenses/MIT +# +# Please preserve changelog entries +# + +%global github_owner jakubledl +%global github_name dissect +%global github_version 1.0.1 +%global github_commit d3a391de31e45a247e95cef6cf58a91c05af67c4 + +%global composer_vendor jakubledl +%global composer_project dissect + +# "php": ">=5.3.3" +%global php_min_ver 5.3.3 +# "symfony/console": "~2.1" +# NOTE: Min version not 2.1 because autoloader required +%global symfony_min_ver %{?el6:2.3.31}%{!?el6:2.7.1} +%global symfony_max_ver 3.0 + +# Build using "--without tests" to disable tests +%global with_tests 0%{!?_without_tests:1} + +%{!?phpdir: %global phpdir %{_datadir}/php} + +Name: php-%{composer_vendor}-%{composer_project} +Version: %{github_version} +Release: 1%{?github_release}%{?dist} +Summary: Lexing and parsing in pure PHP + +Group: Development/Libraries +License: Unlicense +URL: https://github.com/%{github_owner}/%{github_name} +Source0: %{url}/archive/%{github_commit}/%{name}-%{github_version}-%{github_commit}.tar.gz + +# Bin adjustment +Patch0: %{name}-bin.patch +# Fix "PHP Fatal error: Redefinition of parameter $_" +Patch1: %{name}-fix-redefinition-of-parameter.patch + +BuildArch: noarch +# Tests +%if %{with_tests} +## composer.json +BuildRequires: php(language) >= %{php_min_ver} +BuildRequires: php-composer(phpunit/phpunit) +BuildRequires: php-composer(symfony/console) >= %{symfony_min_ver} +BuildRequires: php-composer(symfony/console) < %{symfony_max_ver} +## phpcompatinfo (computed from version 1.0.1) +BuildRequires: php-pcre +BuildRequires: php-reflection +BuildRequires: php-spl +BuildRequires: php-xml +## Autoloader +BuildRequires: php-composer(fedora/autoloader) +%endif + +# composer.json +Requires: php(language) >= %{php_min_ver} +# phpcompatinfo (computed from version 1.0.1) +Requires: php-pcre +Requires: php-reflection +Requires: php-spl +Requires: php-xml +# Autoloader +Requires: php-composer(fedora/autoloader) + +# Weak dependencies +%if 0%{?fedora} >= 21 +Suggests: php-composer(symfony/console) +%endif + +# Composer +Provides: php-composer(%{composer_vendor}/%{composer_project}) = %{version} + +%description +Dissect is a set of tools for lexical and syntactical analysis written in pure +PHP. + +Autoloader: %{phpdir}/Dissect/autoload.php + + +%prep +%setup -qn %{github_name}-%{github_commit} + +%patch0 -p1 +sed \ + -e 's#__VERSION__#%{version}#' \ + -e 's#__PHPDIR__#%{phpdir}#' \ + -i bin/dissect.php + +%patch1 -p1 + + +%build +: Create autoloader +cat <<'AUTOLOAD' | tee src/Dissect/autoload.php +<?php +/** + * Autoloader for %{name} and its' dependencies + * (created by %{name}-%{version}-%{release}). + */ +require_once '%{phpdir}/Fedora/Autoloader/autoload.php'; + +\Fedora\Autoloader\Autoload::addPsr4('Dissect\\', __DIR__); + +\Fedora\Autoloader\Dependencies::optional(array( + '%{phpdir}/Symfony/Component/Console/autoload.php', +)); +AUTOLOAD + + +%install +: Library +mkdir -p %{buildroot}%{phpdir} +cp -rp src/Dissect %{buildroot}%{phpdir}/ + +: Bin +mkdir %{buildroot}/%{_bindir} +install -pm 0755 bin/dissect.php %{buildroot}/%{_bindir}/dissect + + +%check +%if %{with_tests} +: Create tests bootstrap +cat <<'BOOTSTRAP' | tee bootstrap.php +<?php +require '%{buildroot}%{phpdir}/Dissect/autoload.php'; +\Fedora\Autoloader\Autoload::addPsr4('Dissect\\', __DIR__.'/tests/Dissect'); +BOOTSTRAP + +: Upstream tests +RETURN_CODE=0 +PHPUNIT=$(which phpunit) +for PHP_EXEC in php %{?rhel:php54 php55} php56 php70 php71 php72; do + if [ "php" == "$PHP_EXEC" ] || which $PHP_EXEC; then + $PHP_EXEC $PHPUNIT --verbose --bootstrap bootstrap.php || RETURN_CODE=1 + fi +done +exit $RETURN_CODE +%else +: Tests skipped +%endif + + +%files +%{!?_licensedir:%global license %%doc} +%license UNLICENSE +%doc *.md +%doc composer.json +%doc docs +%{phpdir}/Dissect +%{_bindir}/dissect + + +%changelog +* Sun Aug 20 2017 Shawn Iwinski <shawn@iwin.ski> - 1.0.1-1 +- Initial package |