summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2017-10-31 18:32:48 +0100
committerRemi Collet <remi@remirepo.net>2017-10-31 18:32:48 +0100
commited975827086e6587f072aa5638d77c4c987e92b1 (patch)
treee85cb8bbaa82a9176cafc3253b064e2a8a763ab2
parentcc8e245e7bfea8ff3fc931e324fe0fc0842924fb (diff)
fix FTBFS from Koschei, add upstream patch for PHP 7.2
-rw-r--r--.gitignore8
-rw-r--r--d967c0d39c48a79c3c37ff84d8658240038f4d78.patch345
-rw-r--r--php-zendframework-zend-cache.spec51
3 files changed, 381 insertions, 23 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..fc9aa8c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+clog
+package-*.xml
+*.tgz
+*.tar.gz
+*.tar.xz
+*.tar.xz.asc
+*.src.rpm
+*/*rpm
diff --git a/d967c0d39c48a79c3c37ff84d8658240038f4d78.patch b/d967c0d39c48a79c3c37ff84d8658240038f4d78.patch
new file mode 100644
index 0000000..64a9d41
--- /dev/null
+++ b/d967c0d39c48a79c3c37ff84d8658240038f4d78.patch
@@ -0,0 +1,345 @@
+Adapted to be usable from EL-6 (patch doesn't support rename)
+
+
+
+From d967c0d39c48a79c3c37ff84d8658240038f4d78 Mon Sep 17 00:00:00 2001
+From: webimpress <contact@webimpress.com>
+Date: Thu, 26 Oct 2017 12:51:36 +0100
+Subject: [PATCH] :fire: Polyfill PatternPluginManager - to allow work with
+ Zend SMv2 and v3
+
+Fixes issue with PHP 7.2 signature compatibility.
+---
+ autoload/patternPluginManagerPolyfill.php | 17 +++++
+ composer.json | 7 +-
+ composer.lock | 2 +-
+ .../PatternPluginManagerTrait.php | 75 +++++++++++++++++++
+ .../PatternPluginManagerV2Polyfill.php} | 77 +++----------------
+ .../PatternPluginManagerV3Polyfill.php | 87 ++++++++++++++++++++++
+ 6 files changed, 197 insertions(+), 68 deletions(-)
+ create mode 100644 autoload/patternPluginManagerPolyfill.php
+ create mode 100644 src/PatternPluginManager/PatternPluginManagerTrait.php
+ rename src/{PatternPluginManager.php => PatternPluginManager/PatternPluginManagerV2Polyfill.php} (51%)
+ create mode 100644 src/PatternPluginManager/PatternPluginManagerV3Polyfill.php
+
+diff --git a/autoload/patternPluginManagerPolyfill.php b/autoload/patternPluginManagerPolyfill.php
+new file mode 100644
+index 00000000..4d896fb8
+--- /dev/null
++++ b/autoload/patternPluginManagerPolyfill.php
+@@ -0,0 +1,17 @@
++<?php
++/**
++ * @see https://github.com/zendframework/zend-cache for the canonical source repository
++ * @copyright Copyright (c) 2017 Zend Technologies USA Inc. (http://www.zend.com)
++ * @license https://github.com/zendframework/zend-cache/blob/master/LICENSE.md New BSD License
++ */
++
++use Zend\Cache\PatternPluginManager;
++use Zend\ServiceManager\ServiceManager;
++
++call_user_func(function () {
++ $target = method_exists(ServiceManager::class, 'configure')
++ ? PatternPluginManager\PatternPluginManagerV3Polyfill::class
++ : PatternPluginManager\PatternPluginManagerV2Polyfill::class;
++
++ class_alias($target, PatternPluginManager::class);
++});
+diff --git a/src/PatternPluginManager/PatternPluginManagerTrait.php b/src/PatternPluginManager/PatternPluginManagerTrait.php
+new file mode 100644
+index 00000000..8c6f2b27
+--- /dev/null
++++ b/src/PatternPluginManager/PatternPluginManagerTrait.php
+@@ -0,0 +1,75 @@
++<?php
++/**
++ * @see https://github.com/zendframework/zend-cache for the canonical source repository
++ * @copyright Copyright (c) 2005-2017 Zend Technologies USA Inc. (http://www.zend.com)
++ * @license https://github.com/zendframework/zend-cache/blob/master/LICENSE.md New BSD License
++ */
++
++namespace Zend\Cache\PatternPluginManager;
++
++use Zend\Cache\Exception;
++use Zend\Cache\Pattern;
++use Zend\ServiceManager\Exception\InvalidServiceException;
++
++/**
++ * Trait providing common logic between FormElementManager implementations.
++ *
++ * Trait does not define properties, as the properties common between the
++ * two versions are originally defined in their parent class, causing a
++ * resolution conflict.
++ */
++trait PatternPluginManagerTrait
++{
++ /**
++ * Override build to inject options as PatternOptions instance.
++ *
++ * {@inheritDoc}
++ */
++ public function build($plugin, array $options = null)
++ {
++ if (empty($options)) {
++ return parent::build($plugin);
++ }
++
++ $plugin = parent::build($plugin);
++ $plugin->setOptions(new Pattern\PatternOptions($options));
++ return $plugin;
++ }
++
++ /**
++ * Validate the plugin is of the expected type (v3).
++ *
++ * Validates against `$instanceOf`.
++ *
++ * @param mixed $instance
++ * @throws InvalidServiceException
++ */
++ public function validate($instance)
++ {
++ if (! $instance instanceof $this->instanceOf) {
++ throw new InvalidServiceException(sprintf(
++ '%s can only create instances of %s; %s is invalid',
++ get_class($this),
++ $this->instanceOf,
++ (is_object($instance) ? get_class($instance) : gettype($instance))
++ ));
++ }
++ }
++
++ /**
++ * Validate the plugin is of the expected type (v2).
++ *
++ * Proxies to `validate()`.
++ *
++ * @param mixed $plugin
++ * @throws Exception\RuntimeException if invalid
++ */
++ public function validatePlugin($plugin)
++ {
++ try {
++ $this->validate($plugin);
++ } catch (InvalidServiceException $e) {
++ throw new Exception\RuntimeException($e->getMessage(), $e->getCode(), $e);
++ }
++ }
++}
+diff --git a/src/PatternPluginManager.php b/src/PatternPluginManager/PatternPluginManagerV2Polyfill.php
+--- a/src/PatternPluginManager/PatternPluginManagerV2Polyfill.php
++++ b/src/PatternPluginManager/PatternPluginManagerV2Polyfill.php
+@@ -1,27 +1,27 @@
+ <?php
+ /**
+- * Zend Framework (http://framework.zend.com/)
+- *
+- * @link http://github.com/zendframework/zf2 for the canonical source repository
+- * @copyright Copyright (c) 2005-2016 Zend Technologies USA Inc. (http://www.zend.com)
+- * @license http://framework.zend.com/license/new-bsd New BSD License
++ * @see https://github.com/zendframework/zend-cache for the canonical source repository
++ * @copyright Copyright (c) 2017 Zend Technologies USA Inc. (http://www.zend.com)
++ * @license https://github.com/zendframework/zend-cache/blob/master/LICENSE.md New BSD License
+ */
+
+-namespace Zend\Cache;
++namespace Zend\Cache\PatternPluginManager;
+
++use Zend\Cache\Pattern;
+ use Zend\ServiceManager\AbstractPluginManager;
+ use Zend\ServiceManager\Factory\InvokableFactory;
+-use Zend\ServiceManager\Exception\InvalidServiceException;
+
+ /**
+- * Plugin manager implementation for cache pattern adapters
++ * zend-servicemanager v2-compatible plugin manager implementation for cache pattern adapters.
+ *
+ * Enforces that retrieved adapters are instances of
+ * Pattern\PatternInterface. Additionally, it registers a number of default
+ * patterns available.
+ */
+-class PatternPluginManager extends AbstractPluginManager
++class PatternPluginManagerV2Polyfill extends AbstractPluginManager
+ {
++ use PatternPluginManagerTrait;
++
+ protected $aliases = [
+ 'callback' => Pattern\CallbackCache::class,
+ 'Callback' => Pattern\CallbackCache::class,
+@@ -53,14 +53,14 @@ class PatternPluginManager extends AbstractPluginManager
+ /**
+ * Don't share by default
+ *
+- * @var boolean
++ * @var bool
+ */
+ protected $shareByDefault = false;
+
+ /**
+ * Don't share by default
+ *
+- * @var boolean
++ * @var bool
+ */
+ protected $sharedByDefault = false;
+
+@@ -74,7 +74,7 @@ class PatternPluginManager extends AbstractPluginManager
+ *
+ * {@inheritDoc}
+ */
+- public function get($plugin, array $options = [], $usePeeringServiceManagers = true)
++ public function get($plugin, $options = [], $usePeeringServiceManagers = true)
+ {
+ if (empty($options)) {
+ return parent::get($plugin, [], $usePeeringServiceManagers);
+@@ -84,57 +84,4 @@ public function get($plugin, array $options = [], $usePeeringServiceManagers = t
+ $plugin->setOptions(new Pattern\PatternOptions($options));
+ return $plugin;
+ }
+-
+- /**
+- * Override build to inject options as PatternOptions instance.
+- *
+- * {@inheritDoc}
+- */
+- public function build($plugin, array $options = null)
+- {
+- if (empty($options)) {
+- return parent::build($plugin);
+- }
+-
+- $plugin = parent::build($plugin);
+- $plugin->setOptions(new Pattern\PatternOptions($options));
+- return $plugin;
+- }
+-
+- /**
+- * Validate the plugin is of the expected type (v3).
+- *
+- * Validates against `$instanceOf`.
+- *
+- * @param mixed $instance
+- * @throws InvalidServiceException
+- */
+- public function validate($instance)
+- {
+- if (! $instance instanceof $this->instanceOf) {
+- throw new InvalidServiceException(sprintf(
+- '%s can only create instances of %s; %s is invalid',
+- get_class($this),
+- $this->instanceOf,
+- (is_object($instance) ? get_class($instance) : gettype($instance))
+- ));
+- }
+- }
+-
+- /**
+- * Validate the plugin is of the expected type (v2).
+- *
+- * Proxies to `validate()`.
+- *
+- * @param mixed $plugin
+- * @throws Exception\RuntimeException if invalid
+- */
+- public function validatePlugin($plugin)
+- {
+- try {
+- $this->validate($plugin);
+- } catch (InvalidServiceException $e) {
+- throw new Exception\RuntimeException($e->getMessage(), $e->getCode(), $e);
+- }
+- }
+ }
+diff --git a/src/PatternPluginManager/PatternPluginManagerV3Polyfill.php b/src/PatternPluginManager/PatternPluginManagerV3Polyfill.php
+new file mode 100644
+index 00000000..c00ef1d5
+--- /dev/null
++++ b/src/PatternPluginManager/PatternPluginManagerV3Polyfill.php
+@@ -0,0 +1,87 @@
++<?php
++/**
++ * @see https://github.com/zendframework/zend-cache for the canonical source repository
++ * @copyright Copyright (c) 2017 Zend Technologies USA Inc. (http://www.zend.com)
++ * @license https://github.com/zendframework/zend-cache/blob/master/LICENSE.md New BSD License
++ */
++
++namespace Zend\Cache\PatternPluginManager;
++
++use Zend\Cache\Pattern;
++use Zend\ServiceManager\AbstractPluginManager;
++use Zend\ServiceManager\Factory\InvokableFactory;
++
++/**
++ * zend-servicemanager v3-compatible plugin manager implementation for cache pattern adapters.
++ *
++ * Enforces that retrieved adapters are instances of
++ * Pattern\PatternInterface. Additionally, it registers a number of default
++ * patterns available.
++ */
++class PatternPluginManagerV3Polyfill extends AbstractPluginManager
++{
++ use PatternPluginManagerTrait;
++
++ protected $aliases = [
++ 'callback' => Pattern\CallbackCache::class,
++ 'Callback' => Pattern\CallbackCache::class,
++ 'capture' => Pattern\CaptureCache::class,
++ 'Capture' => Pattern\CaptureCache::class,
++ 'class' => Pattern\ClassCache::class,
++ 'Class' => Pattern\ClassCache::class,
++ 'object' => Pattern\ObjectCache::class,
++ 'Object' => Pattern\ObjectCache::class,
++ 'output' => Pattern\OutputCache::class,
++ 'Output' => Pattern\OutputCache::class,
++ ];
++
++ protected $factories = [
++ Pattern\CallbackCache::class => InvokableFactory::class,
++ Pattern\CaptureCache::class => InvokableFactory::class,
++ Pattern\ClassCache::class => InvokableFactory::class,
++ Pattern\ObjectCache::class => InvokableFactory::class,
++ Pattern\OutputCache::class => InvokableFactory::class,
++
++ // v2 normalized FQCNs
++ 'zendcachepatterncallbackcache' => InvokableFactory::class,
++ 'zendcachepatterncapturecache' => InvokableFactory::class,
++ 'zendcachepatternclasscache' => InvokableFactory::class,
++ 'zendcachepatternobjectcache' => InvokableFactory::class,
++ 'zendcachepatternoutputcache' => InvokableFactory::class,
++ ];
++
++ /**
++ * Don't share by default
++ *
++ * @var bool
++ */
++ protected $shareByDefault = false;
++
++ /**
++ * Don't share by default
++ *
++ * @var bool
++ */
++ protected $sharedByDefault = false;
++
++ /**
++ * @var string
++ */
++ protected $instanceOf = Pattern\PatternInterface::class;
++
++ /**
++ * Override get to inject options as PatternOptions instance.
++ *
++ * {@inheritDoc}
++ */
++ public function get($plugin, array $options = null, $usePeeringServiceManagers = true)
++ {
++ if (empty($options)) {
++ return parent::get($plugin, null, $usePeeringServiceManagers);
++ }
++
++ $plugin = parent::get($plugin, null, $usePeeringServiceManagers);
++ $plugin->setOptions(new Pattern\PatternOptions($options));
++ return $plugin;
++ }
++}
diff --git a/php-zendframework-zend-cache.spec b/php-zendframework-zend-cache.spec
index 1ceda54..80f9ff2 100644
--- a/php-zendframework-zend-cache.spec
+++ b/php-zendframework-zend-cache.spec
@@ -21,7 +21,7 @@
Name: php-%{gh_owner}-%{gh_project}
Version: 2.7.2
-Release: 1%{?dist}
+Release: 4%{?dist}
Summary: Zend Framework %{library} component
Group: Development/Libraries
@@ -30,7 +30,8 @@ URL: https://zendframework.github.io/%{gh_project}/
Source0: %{gh_commit}/%{name}-%{version}-%{gh_short}.tgz
Source1: makesrc.sh
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
+Patch0: https://github.com/zendframework/zend-cache/commit/d967c0d39c48a79c3c37ff84d8658240038f4d78.patch
+
BuildArch: noarch
# Tests
%if %{with_tests}
@@ -121,26 +122,40 @@ Documentation: https://zendframework.github.io/%{gh_project}/
%prep
%setup -q -n %{gh_project}-%{gh_commit}
+# EL-6 patch don't allow rename
+mkdir src/PatternPluginManager
+mv src/PatternPluginManager.php src/PatternPluginManager/PatternPluginManagerV2Polyfill.php
+%patch0 -p1
mv LICENSE.md LICENSE
+: Create dependency autoloader
+mv autoload/*.php src
+
+cat << 'EOF' | tee autoload.php
+<?php
+require_once __DIR__ . '/%{library}/patternPluginManagerPolyfill.php';
+EOF
+
%build
# Empty build section, nothing required
%install
-rm -rf %{buildroot}
-
mkdir -p %{buildroot}%{php_home}/Zend/
cp -pr src %{buildroot}%{php_home}/Zend/%{library}
+install -m644 autoload.php %{buildroot}%{php_home}/Zend/%{library}-autoload.php
+
%check
%if %{with_tests}
mkdir vendor
cat << EOF | tee vendor/autoload.php
<?php
+define('RPM_BUILDROOT', '%{buildroot}%{php_home}/Zend');
+
require_once '%{php_home}/Zend/Loader/AutoloaderFactory.php';
Zend\Loader\AutoloaderFactory::factory(array(
'Zend\Loader\StandardAutoloader' => array(
@@ -151,41 +166,31 @@ Zend\Loader\AutoloaderFactory::factory(array(
require_once '%{php_home}/Zend/autoload.php';
EOF
-# remirepo:11
-run=0
ret=0
-if which php56; then
- php56 %{_bindir}/phpunit || ret=1
- run=1
-fi
-if which php71; then
- php71 %{_bindir}/phpunit || ret=1
- run=1
-fi
-if [ $run -eq 0 ]; then
-%{_bindir}/phpunit --verbose
-# remirepo:2
-fi
+for cmd in php php56 php70 php71 php72; do
+ if which $cmd; then
+ $cmd %{_bindir}/phpunit || ret=1
+ fi
+done
exit $ret
%else
: Test suite disabled
%endif
-%clean
-rm -rf %{buildroot}
-
-
%files
-%defattr(-,root,root,-)
%{!?_licensedir:%global license %%doc}
%license LICENSE
%doc *.md
%doc composer.json
%{php_home}/Zend/%{library}
+%{php_home}/Zend/%{library}-autoload.php
%changelog
+* Tue Oct 31 2017 Remi Collet <remi@fedoraproject.org> - 2.7.2-4
+- fix FTBFS from Koschei, add upstream patch for PHP 7.2
+
* Fri Dec 16 2016 Remi Collet <remi@fedoraproject.org> - 2.7.2-1
- update to 2.7.2